[英]List color turns black while Scrolling
我有一个列表活动,当我单击一个选项卡时就会填充,问题是列表颜色在滚动时会变黑,即使我没有设置任何属性来发生这种情况。也有避免此问题的建议吗? 谢谢,
将此添加到xml文件中的listView
中:
android:cacheColorHint="#00000000"
或使用Java代码:
getListView().setCacheColorHint(0);
我建议您阅读这篇文章: ListView背景:优化 ,这是自定义LitsView外观之前必须阅读的文章。
取自上述文件:
如前所述,默认情况下,ListView具有透明/半透明背景,因此Android UI工具箱中的所有默认小部件也是如此。 这意味着ListView重绘其子级时,必须将子级与窗口的background混合 。 再次,这需要从内存中进行昂贵的回读,这在每秒滚动数十次时在滚动或滚动过程中特别痛苦。
为了提高滚动操作过程中的绘图性能,Android框架重用了缓存颜色提示 。 设置此提示后,框架会将列表中的每个子项复制到一个填充有提示值的位图中(假设没有关闭称为滚动缓存的另一种优化)。 然后,ListView将这些位图直接在屏幕上放大,并且由于已知这些位图是不透明的,因此不需要进行混合。 另外,由于默认的缓存颜色提示为#191919,因此在滚动过程中,每个项目后面都有深色背景。
要解决此问题 ,您所要做的就是禁用缓存颜色提示优化(如果您使用的是非纯色背景),或者将提示设置为适当的纯色值。 您可以使用android:cacheColorHint属性从代码(请参见setCacheColorHint(int)
),或者最好从XML进行此操作。 要禁用优化,只需使用透明色#00000000
。 以下屏幕快照显示了在XML布局文件中设置了android:cacheColorHint="#00000000"
的列表
我知道回答这个问题很晚,但是对于其他面临这个问题的人来说:
以上技术可能有效,但实际要做的是添加
android:scrollingCache="false"
在列表布局中 。 像这样
<ListView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/myList"
android:scrollingCache="false"
/>
你可以从这里scrollingCache得到这个原因?
谢谢
您是否在使用以下功能的活动或应用上设置了主题?
<item name="android:windowBackground">@null</item>
当您拥有一个填充父视图的视图(通常为surfaceView)时,此技巧可以大大加快2D绘图的速度。 我已经看到这导致listViews和scrollViews出现奇怪的背景渲染。
如果您使用null windowbackground hack,则可以尝试为列表视图设置背景色,我敢打赌,滚动问题将会减轻。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.