Android Gallery控制触摸事件的顺序与getChildDrawingOrder不同步
我正在构建一个定制的android控件扩展库。我需要覆盖视图的效果,所以我发布Android Gallery控制触摸事件的顺序与getChildDrawingOrder不同步,android,android-layout,android-controls,Android,Android Layout,Android Controls,我正在构建一个定制的android控件扩展库。我需要覆盖视图的效果,所以我发布 setSpacing(-60); 一旦我给了这个,我有三个图标在画廊,1,3画第一,然后2,这是中心的一个。相同的规则在getChildDrawingOrder中定义,并且通过 setChildrenDrawingOrderEnabled(true); 现在的问题是,视图是按照我在排序中定义的规则绘制的。但是gallery控件中的事件将按原始视图顺序进行,即1,2,3。为了更好地解释 绘制1,绘制3,最后绘制2,
setSpacing(-60);
一旦我给了这个,我有三个图标在画廊,1,3画第一,然后2,这是中心的一个。相同的规则在getChildDrawingOrder
中定义,并且通过
setChildrenDrawingOrderEnabled(true);
现在的问题是,视图是按照我在排序中定义的规则绘制的。但是gallery控件中的事件将按原始视图顺序进行,即1,2,3。为了更好地解释
绘制1,绘制3,最后绘制2,它们相互重叠。
因此,视图有50%的1视图、100%的2视图和50%的第3视图
但当我触摸视图时,android假设屏幕上可以看到1的50%、2的50%和3的100%。更清楚一点,在1视图的50%之后,如果我单击,2将聚焦(这是它应该的方式,因为根据我的绘图规则,2位于1的顶部)
但是,当我单击视图2 50%之后的任意位置时,焦点将转到3,而按照图纸3的顺序,在那里不可见,2的100%可见,但对于视图1的50%区域,焦点是视图2
您能否帮助我们分享您的想法,我们可以通过强制事件顺序遵循屏幕上的视图模式来解决此问题?您必须手动重新计算这些子视图的触摸区域
您很可能希望覆盖并返回自己的
Rect
对象,该对象的边界已根据重叠区域进行了调整。您必须手动重新计算这些子视图的触摸区域
您很可能希望覆盖并返回自己的Rect
对象,该对象的边界已根据重叠区域进行了调整