微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 如何查找MotionEvent ACTION_CANCEL的源视图

如何找到导致MotionEvent ACTION_CANCEL的视图?我有一个接收ACTION_CANCEL的视图“A”,我不希望这种情况发生.在某处,视图“B”正在“消耗”MotionEvent.我希望有一种方法可以找出谁是“B”,这样我就能解决这个错误的问题.

我已经尝试查看我的代码中的各种OnTouchEvent()和OnInterceptTouchEvent()处理程序,但还没有找到罪魁祸首.

我还在有问题的ACTION_CANCEL上设置了一个断点但是我无法识别可能代表“B”的MotionEvent中的任何内容.

解决方法

如果父母正在拦截运动事件,防止这种情况的唯一方法是阻止父母进行
拦截那个事件.这可以通过两种方式很好地管理.

如果没有看到具体的代码并想要一个通用的解决方案,我会建议如下.

我建议通过管理家长和孩子来管理你的触摸事件
requestDisallowInterceptTouchEvent(boolean)

受影响的视图A,B中的每个视图/视图组的onInterceptTouchEvent(android.view.MotionEvent)事件处理程序.

通过禁止孩子的父母拦截,这有助于你抓住父母拦截
没有考虑,也从一个父母内部定制和改变子元素.

这必须从您的视图/ viewGroup的最高父级进行管理,并通过所有父级和
孩子的关系.

检查列表视图,具有内置触摸事件的任何元素.

android.com/training/gestures/viewgroup

在找到拦截事件的违规视图方面,除了以下逻辑之外无法回答:

遍历每个父级到子级/父级到子级视图.有条不紊地检查每个视图/视图组中的ontouch处理
如我的图所示.

这些答案中有更多细节:
https://stackoverflow.com/a/30966413/3956566
https://stackoverflow.com/a/6384443/3956566

我相信你明白这一点,但对我来说,这是最简单的解决方案.

除此之外,我们还需要查看您的代码以对其进行故障排除.

原文地址:https://www.jb51.cc/android/318305.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐