【问题标题】:Find out which View consumed touch event, if any找出哪个 View 消耗了触摸事件(如果有)
【发布时间】:2017-04-04 15:27:57
【问题描述】:

我正在对与视图相关的问题进行故障排除:点击侦听器在应该触发时没有触发。经过长时间的反复试验,我发现父视图被禁用,因此将所有事件都丢弃给它的子视图。

在 Android 中,有没有一种方法可以准确地找到将触摸或单击事件注入应用程序时发生的情况?比如它是如何分派的,它遍历了哪些视图,谁忽略了它(以及为什么),谁丢弃了它(以及为什么)以及最终谁消费了它。

理想情况下,应用程序中的每次点击都会在 Logcat 上发出某种低级转储。

【问题讨论】:

  • 您可以找到手指触摸点下的视图,然后重写 onTouchEvent() 方法并为其设置断点,以查看是否有视图处理了事件而不是您预期的视图。(这是一个丑陋的方式...)

标签: android android-view android-custom-view motionevent android-touch-event


【解决方案1】:

正如您在similar post at the issue tracker Dianne Hackborn 中看到的那样:

目前没有办法做到这一点。

意思是,框架中没有这样的API。

但是您可以拥有一个自定义根ViewGroup 并监听每个触摸事件(通过onInterceptTouchEvent())和dump the MotionEvent

我相信这是迄今为止唯一可行的方法。

【讨论】:

    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 2023-04-04
    • 2011-04-16
    相关资源
    最近更新 更多