Android裡透明的ListView

2021-06-20 04:57:09 字數 1364 閱讀 5673

發現了乙個list滾動時,某item背景透明的問題。網上搜尋一下,發現有很多人在問list背景黑色的問題,交流中給出的解決方案基本上很統一。

先是解釋問題產生的原因是android對list的滾動做了顯示優化,用寫在該list的layout檔案中的android:cachecolorhint顏色值與item背景混合,黑色主題下該顏色值預設為#ff191919,於是背景黑了。

解決方案是關掉優化。怎麼關?有說把android:cachecolorhint設定為"@android:color/transparent",也有說把"@android:color/transparent"改為"#00000000"。

其實這個「關」,就是把那個顏色設定為透明。當然,設定成與背景相同的顏色也可以。或者設定成"@null"。可參考這篇文章:

稍微努點力就能搜尋到romain guy的一篇部落格,romain是google的android開發工程師,負責圖形和動畫相關的東西,據說listview就是他整的。

他的這篇部落格叫「why is my list black? an android optimization」,說的就是這個事。到底做了怎樣的優化,這個現象是怎麼產生的,文章裡說得比較清楚了。文末也給出了解決方案,這是最權威的解答了。

但是,我所搜到的所有的討論,和我遇到的情況還不大一樣。

看上去,各種討論裡說的是似乎是整個list背景黑掉或者透明了,或者至少是除了當前選中項之外的其他所有item的背景黑掉或者透明掉。

我遇到的是,某乙個item的背景透明了。出狀況的item比較隨機。

listview的layout檔案中,android:cachecolorhint已經設定為"@android:color/transparent",改為"#00000000"依然如此。

幾乎無計可施的情況下,領會romain說的優化思路,嘗試把android:cachecolorhint設定為listview的背景色。

可是,我們給listview貼圖作為背景的,而android:cachecolorhint不支援設定資源。

所以,嘗試給它乙個接近背景色貼圖顏色的不透明色值,還好,這張圖不是五彩斑斕的,雖有漸進色,但還是比較難一眼辨明。

好吧,算是臨時解決了。

我遇到的這個狀況,在我測試過的不多的手機和平板中,只在lenovo s890上出現。有誰知道究竟是為什麼麼?

[2013-06-19 edit] 幾天後再次看這個問題,有一點新發現,對於背景貼圖的listview,無法設定cachecolorhint顏色值,可以用這個方法關閉該優化。

android

:scrollingcache

="false"

預設是"true",開啟優化可以使render更快,但是需要更多的記憶體。測試一下關掉優化是否可以接受。

Android開發 Android顏色透明度換算表

目錄 一 背景 二 顏色值標準格式 三 透明度 四 透明度計算 作為一名android開發人員,在每次開發的時候,ui會在設計圖中標註顏色值,或者會直接給出顏色值,如 ff2309,但是有時候為了達到某種效果,需要在顏色值前面新增透明度,如 40 的透明度。還有一種情況就是交給ui驗收的時候,說介面...

Android背景透明的 Dialog

一 控制dialog 的背景方法 1.定義乙個無背景主題主題 複製 2.建立dialog dialog new dialog this,r.style.dialog dialog.setcontentview r.layout.dialog loading 複製 or dialog new dial...

讓透明div裡的文字不透明

class box 這是一段不應該透明的文字 box 這樣我的文字幾乎看不清,這當然不是我想要的,隨即去查詢資料,找到了乙個解決辦法,使用css3的屬性 box 這種方式是利用css3的新屬性,更改背景的透明度,這樣就不會影響到內容的透明度,但是有乙個問題就是目前很多瀏覽器對css3的屬性不支援,沒...