onInterceptTouchEvent 对于两个重叠的 ViewGroup 是如何工作的?

问题描述 投票:0回答:1

我可能误解了onInterceptTouchEvent的概念,需要你的帮助。

因此,如果我有与 ViewGroup A 重叠的 ViewGroup A 和 ViewGroup B,我想知道如何调用 onInterceptTouchEvent 。

视图层次结构是:

活动 -> 视图组 A -> 视图 A -> 视图组 B -> 视图 B

因此 ViewGroup A 和 ViewGroup B 都是在同一个 Activity 下创建的。 ViewGroup B 总体上与 ViewGroup A 重叠。View B 也与 View A 重叠。现在,如果我点击 View B,onInterceptTouchEvent 的顺序是什么?

我的理解是onInterceptTouchEvent的顺序是Activity -> ViewGroup A -> View A -> ViewGroup B -> View B(见照片),但实际测试显示顺序是Activity -> ViewGroup B -> View B. 如果触摸事件不经过 ViewGroup B 和 View B,则不会调用 ViewGroup A 和 View A 上的 onInterceptTouchEvent。有人可以帮我理解哪个顺序是正确的以及 onInterceptTouchEvent 的正确概念是什么?感谢您的帮助!

android android-view touch-event android-gesture android-touch-event
1个回答
0
投票

答案是 z 排序。 z 排序基本上是“顶部的内容”,z 指的是笛卡尔平面的 z 轴。当 ViewGroup 布置其子级时,它会布置 1 个元素,然后布置下一个元素。第二个位于顶部,并将覆盖另一个。这是第一个获得触摸命令的人。如果视图组中的所有内容都返回 false 并表示它不处理触摸,那么它将落入其下方的视图组。

© www.soinside.com 2019 - 2024. All rights reserved.