【问题标题】:Android Gallery control order of touch events not in sync with getChildDrawingOrder触摸事件的 Android Gallery 控制顺序与 getChildDrawingOrder 不同步
【发布时间】:2011-12-22 02:37:53
【问题描述】:

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

setSpacing(-60);

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

setChildrenDrawingOrderEnabled(true);

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

1 被绘制,3 被绘制,最后 2 被绘制,它们相互重叠。 因此,该视图具有 1 的 50%、2 的 100% 和 3 视图的 50%。

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

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

您能否帮助分享您对我们如何通过强制事件顺序遵循屏幕上的视图模式来解决它的想法?

【问题讨论】:

    标签: android android-layout android-controls


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 1970-01-01
      • 2015-08-10
      • 2017-11-06
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多