今天使用 ViewFlipper 来实现手势的时候 onFling的事件怎么也触发不了 .
我的XML中含有Gridview,没有scrollview,也无法触发onfling,后来加上以下代码
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
myGestureDetector.onTouchEvent(ev);
gridview.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
能够捕获到touch event事件
后来找到原因 ,原来是加入ScrollView后就没法响应了。
再后来看到说用dispatchTouchEvent(MotionEvent ev) 的方法,果然可以,不过帖子没说具体怎么办,查了些文档,试验了几个方法,果然找到了一个,和大家分享下。
具体原因我也不是很明白,可能是因为ScrollView抢占了MotionEvent 事件,所以GestureDetector
捕获不到任何的touch event,自然就不会相应了,方法是@override
public boolean dispatchTouchEvent(MotionEvent ev) {
mGestureDetector.onTouchEvent(ev);
scroll.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);
}
然后发送MotionEvent分别给你的GestureDetector和ScrollView,而不是dispatchMotionEvent,我猜测dispatch后会被ScrollView先取走,从而GestureDetector就无法响应了,所以这里就都派发出去
本文探讨了在Android应用中使用ScrollView时遇到MotionEvent事件无法响应的问题,并提供了解决方法。通过重写dispatchTouchEvent方法,分别派发MotionEvent给GestureDetector和ScrollView,解决了事件响应问题。
1059

被折叠的 条评论
为什么被折叠?



