滚动时列表颜色变为黑色

use*_*490 7 android

我有一个列表活动填充当我点击一个选项卡时,问题是列表颜色变为黑色,同时滚动它,即使我没有设置任何属性发生这样..任何建议,以避免这个问题?谢谢,

Sha*_*wat 21

将其添加到listViewxml文件中:

android:cacheColorHint="#00000000"
Run Code Online (Sandbox Code Playgroud)

或者在Java代码中:

getListView().setCacheColorHint(0);
Run Code Online (Sandbox Code Playgroud)


Par*_*ani 7

我建议你阅读这篇文章:ListView背景:一个优化,在定制LitsView外观之前必须阅读这篇文章.

取自上述文件:

如前所述,默认情况下,ListView具有透明/半透明背景,因此Android UI工具包中的所有默认小部件都是如此.这意味着当ListView重绘其子项时,它必须将子项与窗口的背景混合.再一次,这需要从内存中进行昂贵的回读,这在滚动或拖动期间特别痛苦,因为每秒进行数十次绘制.

为了提高滚动操作期间的绘图性能,Android框架重用了缓存颜色提示.设置此提示后,框架会在填充了提示值的位图中复制列表的每个子项(假设另一个优化,称为滚动缓存,未关闭).然后ListView直接在屏幕上显示这些位图,因为已知这些位图是不透明的,所以不需要混合.此外,由于默认缓存颜色提示为#191919,因此在滚动期间每个项目后面都会显示深色背景.

要解决此问题,您所要做的就是禁用缓存颜色提示优化,如果使用非纯色背景,或将提示设置为适当的纯色值.您可以setCacheColorHint(int)通过使用android:cacheColorHint属性从代码(请参阅参考资料)或最好从XML 执行此操作.要禁用优化,只需使用透明色#00000000.以下屏幕截图显示了android:cacheColorHint="#00000000"XML布局文件中带有set 的列表