[英]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.