2013-04-23 1 views
2

У меня есть список с элементами, содержащими несколько кнопок. Макет для одного элемента выглядит примерно так:отправка событий касания от слушателя жестов onSingleTapConfirmed и сохранения селекторных эффектов

The black frame represents one listview item

У меня есть перекрывающий прозрачный вид, охватывающий весь каждый элемент списка. Этот вид прослушивает два жесты: onDoubleTap и onSingleTapConfimred.

, чтобы вызвать клик слушателей на основных кнопках я только может отправлять события прикосновения с наложением сенсорного слушателя, но это не показывают селекторы и состояния на кнопки (например, изменили цвет фона на печати). Я также хочу только на триггер события щелчка, когда представление верхи уволил onSingleTapConfimred

... 
final DtGestureDetector detector = new DtGestureDetector(position); 
final GestureDetector gd = new GestureDetector(convertView.getContext(), detector); 
postViewHolder.viewOverlay.setOnTouchListener(new OnTouchListener() {   
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     //i want to trigger this only onSingleTapConfirmed and set the view selector on touch 
     //postViewHolder.txtMessage.onTouchEvent(event); 
     //postViewHolder.layPhoto.onTouchEvent(event); 
     gd.onTouchEvent(event);      
     return true; 
    } 
}); 
... 
private class DtGestureDetector extends GestureDetector.SimpleOnGestureListener { 

    private int position; 

    public DtGestureDetector(int position) { 
     super(); 
     this.position = position; 
    } 

    public boolean onDoubleTap(MotionEvent e) { 
     Log.d(tag, "DoubleTap"+position); 
     return true; 
    } 

    @Override 
    public boolean onSingleTapConfirmed(MotionEvent e) { 
     Log.d(tag, "SingleTap"+position); 
      return true; 
    } 
} 

ответ

0

я мог бы решить эту проблему путем задания состояния программно

int[] state = new int[] {android.R.attr.state_window_focused, android.R.attr.state_focused}; 
drawable.setState(state); 
Смежные вопросы