Android ListView 不会在滚动时重绘

Posted

技术标签:

【中文标题】Android ListView 不会在滚动时重绘【英文标题】:Android ListView not being repainted on scroll 【发布时间】:2013-07-19 07:02:00 【问题描述】:

最好用图片来描述。在滚动到我的ListView 之前,一切看起来都很好:

滚动后:

什么可能导致这种奇怪的行为?我正在运行 Android 4.2.2Google Nexus 上对其进行测试,并在运行 Android 3.2 的模拟器上进行了测试,结果相同。在此示例中,我使用具有两种类型行的 ListView,但使用仅具有一种行类型的标准 ListView 得到相同的结果。

【问题讨论】:

【参考方案1】:

原来问题是我没有在我的布局 XML 文件中设置背景颜色...如果有人可以向我解释为什么这可以解决问题,我将不胜感激。添加 android:background="#000000" 到我的主布局修复了它。

....

【讨论】:

我不确定,但我认为对于较新的设备,他们使用硬件加速来绘制布局等。我认为这利用了 OpenGL ES,如果您曾经编写过一些东西来以 3d 形式在屏幕上绘制和移动,而不是绘制背景,那么就会留下类似的伪影。我想,因为它从来没有被告知要吸引那部分记忆,所以它只会留下任何存在的东西。由于缓冲和其他东西,它会闪烁。如果我错了,请纠正我。 哦,好吧,这是有道理的。至少您的前提是正确的,并且对于 Android 4.0 及更高版本,硬件加速默认情况下处于启用状态。不过,令我惊讶的是,我在 Internet 的其他地方找不到这种特定问题的出现。毕竟,我觉得既不设置背景颜色又拥有列表视图并不少见。谢谢你的解释!

以上是关于Android ListView 不会在滚动时重绘的主要内容,如果未能解决你的问题,请参考以下文章

安卓listview的item点击时候的背景颜色怎么去掉或者设置成透明的呢?

Android View 不会通过滑动手势滚动,也不会滚动。将 ListView 与 ArrayAdapter 一起使用

Android——listview android:cacheColorHint,android:listSelector属性作用

防止在 UIScrollView 的最大/最小缩放时重绘屏幕

html5画布在调整大小时重绘

Flex Spark TitleWindow 在拖动时重绘错误