gpt4 book ai didi

java - 当有多个 child 时如何检测父 View 的滑动?

转载 作者:行者123 更新时间:2023-12-02 09:41:51 26 4
gpt4 key购买 nike

我有一个由多个线性布局形成的自定义日历布局。当我将 OnTouchListener 设置为父 View 时。它不起作用,因为它们充满了 subview 。我无法将监听器添加到每个 subview ,因为需要设置很多内容。有什么解决方案可以解决这个问题吗?

最佳答案

事实证明,拦截触摸事件并不像 guide 那样简单明了。会让我们相信。要正确处理 ViewGroup 中的触摸事件,您需要重写 onInterceptTouchEvent()onTouchEvent()(如果您不这样做)希望您的 subview 也能获取触摸事件)。

reference docs for onInterceptTouchEvent() 以比指南更清晰的方式解释这一点。这是 article其中包含相关代码和说明。

TL;DR - 一旦在 onInterceptTouchEvent() 中拦截触摸事件并返回 true,以下触摸事件就会发送到 onTouchEvent()父 View 组的 code>。如果在 onInterceptTouchEvent() 中返回 false,则以下触摸事件将发送到 subview 的 onTouchEvent(),您可以在 onInterceptTouchEvent() 中继续拦截该 subview 。 )

<小时/>

您需要在自定义日历布局中重写 onInterceptTouchEvent() 并在那里进行触摸处理。引用official guide以供进一步引用。

The onInterceptTouchEvent() method is called whenever a touch event is detected on the surface of a ViewGroup, including on the surface of its children. If onInterceptTouchEvent() returns true, the MotionEvent is intercepted, meaning it is not passed on to the child, but rather to the onTouchEvent() method of the parent.

关于java - 当有多个 child 时如何检测父 View 的滑动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57016271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com