2011-12-22 55 views
2

我正在构建一个自定义的Android控件,以扩展Gallery。我需要被覆盖,所以我发出Android画廊触摸事件的控制顺序不与getChildDrawingOrder同步

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%可见,但对于视图的50% 1,重点是视图2.

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

回答

0

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

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