Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Gallery控制触摸事件的顺序与getChildDrawingOrder不同步_Android_Android Layout_Android Controls - Fatal编程技术网

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

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,

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

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
对象,该对象的边界已根据重叠区域进行了调整