gpt4 book ai didi

android - 由父级捕获 onTouch 事件,处理并传递给子级

转载 作者:IT老高 更新时间:2023-10-28 23:11:42 26 4
gpt4 key购买 nike

我试图了解 Android 如何处理触摸事件,但有点困惑。据我了解,触摸事件被发送到 Root View 并传递给 child 。我有一个 FrameLayout,它是 Fragment 的容器。第一个 fragment View 是 ScrollView,第二个是某种 Gallery (Horizo​​ntalListView),最后一个也是 FrameLayout。每次布局中只有一个 fragment 。我想要做的是识别用户在屏幕上的滑动,以供应用程序使用。我想计算滑动次数并在滑动几次后做一些事情。

我试图在顶部 FrameLayout 上放置一个 OnTouchListener,但是当 child 是 ScrollView画廊。我试图在 onTouch 的末尾返回 falsetrue,但我得到了相同的结果 - 它永远不会被调用。

我该怎么做?我只想“透明地”处理触摸事件并将它们传递给我,就像我什至没有触摸它们一样。

最佳答案

我的理解是它实际上走向了另一个方向。 subview 首先触发他们的事件(有点)。 Root View 获取它的 dispatchTouchEvent() 调用,它将事件向下传播到子级的 onTouchEvent(),然后,根据它们返回 true 或 false,父级的onTouchEvent() 被调用。

拦截此类事件的正常解决方案是在一个人的 Activity 中覆盖 dispatchTouchEvent(MotionEvent ev),如下所示:

@Override
public boolean dispatchTouchEvent (MotionEvent ev) {
// Do your calcluations
return super.dispatchTouchEvent(ev);
}

这个文档是 here .请注意,您还可以在任何 ViewGroup 中覆盖该方法(例如 FrameLayout 等)

关于android - 由父级捕获 onTouch 事件,处理并传递给子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12168254/

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