簡體   English   中英

滾動時列表顏色變為黑色

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM