我有一个覆盖整个屏幕的视图(称为
为了接收来自
ParentView
),和一个只覆盖部分屏幕的子视图ChildView
。我想让ChildView
响应onSingleTapUp()
事件,而让ParentView
响应onFling()
事件。我尝试在ChildView
上附加一个SimpleOnGestureListener
监听器,并在ParentView
上附加另一个SimpleOnGestureListener
监听器来实现这个目标。为了接收来自
ChildView
的onSingleTapUp()
事件,其监听器的onDown()
方法必须返回true。但一旦我这样做了,与ParentView
相关联的监听器就无法再捕获任何运动事件,因为这些事件已被ChildView
的监听器占用。即使ChildView
的onFling()
方法返回false,这些事件也无法流向ParentView
的监听器。
如何才能让父视图的监听器捕获滑动手势,同时让子视图的监听器捕获点击手势?
我认为不需要任何源代码来解释这种情况,但是这里是设置我的ChildView
监听器的代码片段。ChildView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return singleTapGestureDetector.onTouchEvent(motionEvent);
}
});
一种解决方法可能是让ParentView
和ChildView
的监听器都处理onFling()
,而只有ChildView
的监听器处理onSingleTapUp()
。但在这种情况下,快速滑动不会跨越ChildView
(比如从子视图之外开始,然后在子视图内结束)。