View或者ViewGroup获取不到点击事件问题排查

78 阅读1分钟
  1. 通过dispatchTouchEvent先确认MotiveEvent有没有分发到目标View。
  2. 如果有分发过来说明,目标View可以接收到事件。
  3. 强制将onInterceptTouchEvent设置为true,拦截掉事件。看下目标View能否消耗事件(回调onClick)。
  4. 如果能够消耗,排查目标View中的子View,有没有能够消耗点击事件的,方便排查可以将子View的clickable都设置为false。
  5. 如果目标View拦截点击事件后,发现还是没有消耗该事件(onClick没有回调)。那就还有一种情况。
  6. 这种情况多存在于事件注入场景,那就是down和up之间的时间间隔不够100ms,没有被系统判断为是一个点击事件。所以没有回调。具体逻辑可以看:github.com/aosp-mirror…