onFling无法触发

本文探讨了在Android应用中使用ScrollView时遇到MotionEvent事件无法响应的问题,并提供了解决方法。通过重写dispatchTouchEvent方法,分别派发MotionEvent给GestureDetector和ScrollView,解决了事件响应问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

今天使用 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就无法响应了,所以这里就都派发出去

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值