我正在实施类似于Android Gmail应用中的滑动手势,您可以在其中拖动项目进行存档。
我在项目视图中附加了一个触摸侦听器,并且手势探测器和听众可以听到这样的触摸事件:
GestureDetector.OnGestureListener gl;
gl = new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float dx, float dy) {
// ... handle horizontal scrolling
return true;
}
};
final GestureDetector gd = new GestureDetector(getContext(), gl);
itemView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent e) {
gd.onTouchEvent(e);
// ... handle TOUCH_UP and TOUCH_CANCEL
return true;
}
});
问题在于,一旦我开始垂直拖动,或者超出项目视图的边界,手势就会被取消,列表视图会开始处理它以进行正常的垂直列表滚动。我需要在用户释放手指之前取消手势,即使它移出表格单元格,就像在Gmail应用程序中完成一样。
我如何取消它?