问题: 我有一个可扩展的listView。组项目可以在右侧包含橙色三角形(如图像上所示)。此三角形从View派生,并通过重写的onDraw方法在画布上绘制。 这适用于两个“例外”;)。
用户滚动列表后,滚动条消失后,滚动条所在的空间没有正确重绘(缓存?)。我在下图中说明了问题: The problem illustrated as image(不幸的是我不允许发布图片......)
当活动开始后,当有更多列表内容可以在一个屏幕上显示时,存在相同的结果(上图右侧的第三部分)。例如如果需要滚动条。
当然,我对自定义视图和列表视图绘制/查看/缓存问题进行了一些研究。不幸的是我找不到匹配的答案。
问题: 你能想象问题的根源是什么吗? 自定义视图中是否存在问题?在列表视图中使用自定义视图时,是否必须注意与问题相关的任何事情?
我非常感谢你的回答, 迭
答案 0 :(得分:0)
我现在发现了这个问题。 在onDraw(Canvas canvas)重写方法中,我使用canvas.getClipBounds()来确定我的视图的矩形以在其上绘制三角形。 这可能显然是错误的。 Android希望我重新绘制滚动条所在的区域,并在设置为该区域的画布上绑定剪辑。
我现在使用View.getWidth()& getHeight确定我可以绘制的区域大小的方法。
补充: 我觉得不可思议的是,我不能确定我可以通过画布绘制的视图的矩形。画布宽度和高度设置为显示分辨率的值。也许有人对...有一个有趣的评论。