我有一个自定义 ListView 并使重叠变得非常简单:在 onDraw
方法中,我将行的 z 轴设置为大约 200 并重写 getChildDrawingOrder (int childCount, int i)
。所以结果看起来像这样:
当然,还有更多看起来像那样的过渡,但它们与本题无关。
但是正如您所见,大约一秒钟,顶行(我的意思是在 z 轴上,它是白色的)看起来有问题。有 imageViews
具有两种可绘制状态(当行在中心时为白色,当行在中心外时为蓝色)(按坐标)。通过设置背景可绘制对象以编程方式更改可绘制对象。错误似乎显示何时发生从一个可绘制对象到另一个可绘制对象的过渡:底部部分的重绘发生在行的主要部分之后。我需要同时制作两件来更改可绘制对象,所以不会有这样的错误。是android的bug还是我可以解决?
有谁知道为什么会这样?
最佳答案
我使用了 nininho 的建议在 rotected boolean drawChild(Canvas canvas, final View child, long drawingTime) {}
方法中应用 requestLayout() 并且它有效。
附言把它放在你真正需要它的地方,我只把它放在过渡的地方,因为这种方法会消耗大量资源,同时它会重新绘制整个 child 。
关于java - Android:重叠使列表错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10846374/