我在Android中有一个ListView,我想有行视图和父ListView本身的onTouchListeners。我想要单独响应单击和长按,但要在整个ListView上掠过。 (我可以单独为每个行设置onFling方法,但它不是健壮的,因为用户可以在行之间移动他的手指。)我能够成功地为行和ListView分别设置onTouchListener,但是当我同时设置,ListView侦听器从不触发 - 只有行侦听器。无论我在行监听器的方法中是否返回true或false,都是这种情况。是否有人知道如何触发onTouchListeners的视图和它的父母,因为他们占用屏幕上的相同像素?单独的onTouchListeners视图和它的父
为ListView相关的代码:
在活动onCreate方法:
mListViewDetector = new GestureDetector(new ListViewGestureListener());
mListViewListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return mListViewDetector.onTouchEvent(event);
}
};
mListView = getListView();
mListView.setOnTouchListener(mListViewListener);
而定制GestureListener类(在活动定义为嵌套类):
class ListViewGestureListener extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
Log.i("ListViewGestureDetector","onFling");
return false;
}
}
列表视图中各行的相关代码:
在适配器类的bindView方法:
TextView textView;
textView.setOnTouchListener(new ListsTextViewOnTouchListener());
而定制onTouchListener类(在适配器类定义为嵌套类):
class ItemsTextViewOnTouchListener implements OnTouchListener {
public boolean onTouch (View v, MotionEvent event){
switch(event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
//stuff
return false;
case MotionEvent.ACTION_CANCEL:
//stuff
return false;
default:
break;
}
return false;
}
}
绝对的,但让我问你:你丢滚动或扔左/右? – 2012-01-05 13:24:17
从左到右。我正在使用它来切换活动。 – pvans 2012-01-06 04:27:44