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

时间:2011-12-22 02:37:54

标签: android android-layout android-controls

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

setSpacing(-60);

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

启用
setChildrenDrawingOrderEnabled(true);

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

绘制

1,绘制3,最后绘制2,并且它们彼此重叠。 所以视图有1%的100%,2的100%和第3视图的50%。

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

但是当我在视图2的50%之后点击任意位置时,焦点变为3,而按照图纸3的顺序在那里看不到,100%的2是可见的,但50%的视图区域1 ,重点是观点2.

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

1 个答案:

答案 0 :(得分:0)

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

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