gpt4 book ai didi

Android Gallery 控制触摸事件的顺序与 getChildDrawingOrder 不同步

转载 作者:行者123 更新时间:2023-11-29 14:02:59 26 4
gpt4 key购买 nike

我正在构建一个扩展 Gallery 的自定义 android 控件。我需要叠加 View 的效果,所以我发布了

setSpacing(-60);

一旦我给出这个,我就会在画廊中有三个图标,首先绘制 1、3,然后是中间的 2。相同的规则在 getChildDrawingOrder 中定义,并通过

启用它
setChildrenDrawingOrderEnabled(true);

现在的问题是 View 是按照我在排序中定义规则的方式绘制的。但是图库控件中的事件将按照原始 View 顺序进行,即 1、2、3。为了更好地解释,

画了1,画了3,最后画了2,它们相互重叠。所以 View 有 50% 的 1、100% 的 2 和 50% 的第 3 个 View 。

但是当我触摸 View 时,android 假定屏幕上可见 1 的 50%、2 的 50% 和 3 的 100%。为了更清楚一点,在 1 个 View 的 50% 之后,如果我单击,2 会聚焦(这是应该的方式,因为根据我的绘图规则,2 在 1 之上)。

但是当我在 View 2 的 50% 之后单击任何地方时,焦点转到 3,而按照绘图 3 的顺序在那里不可见,2 的 100% 是可见的,但是对于 View 1 的 50% 区域,焦点是 View 2。

关于我们如何通过强制事件顺序遵循屏幕上的 View 模式来解决这个问题,您能否分享您的想法?

最佳答案

您必须手动重新计算这些 subview 的触摸区域。

您很可能想要覆盖 getHitRect()并返回您自己的 Rect 对象,其边界已根据重叠区域进行了调整。

关于Android Gallery 控制触摸事件的顺序与 getChildDrawingOrder 不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598863/

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