2013-05-22 40 views
0

我正在使用ListView和我自己的BaseAdapter來呈現項目列表。可以將項目列入高位。當我這樣做,我將在BaseAdapter這樣的背景:從ListView中刪除Alpha通道ConvertView

if (position == selectedItem) { 
    convertView.setBackgroundResource(R.color.mylightcyan); 
} else { 
    convertView.setBackgroundResource(0); 
} 

這個作品非常好,除了View S中convertView內(也有一些按鈕編輯的項目),似乎是有點透明,即使getAlpha()返回1.0

當我明確設置包含的背景Button時,它呈現我想要的鋤頭。我怎樣才能「移除」這種類似alpha的行爲?

我得到什麼: enter image description here

我想要什麼: enter image description here

+0

它有可能從適配器有你的getView()方法?請使用xml佈局發佈它? – Jarvis

回答

0

這是因爲* .9.png文件Android使用作爲按鈕的默認資源具有透明度他們(按鈕本身是半透明的)。因此,將alpha設置爲0只會使其與原始圖像本身不透明。

一種方式(儘管tedius)將使每個樣式(按鈕,開關等)的自定義drawables/xml在列表中,並將其包含在您的項目中。

相反,你可以做一些hacky:將你的BaseAdapter的每個元素(即按鈕,開關等)包裝在一個線性佈局中,並將這些linearlayout的背景設置爲列表中的相同背景。這樣,您將在按鈕後面有一個不透明的背景,用於遮罩高亮顏色。

+0

謝謝,即使我選擇另一種解決方法,我也會接受。我只是在行中放置一個ImageView來表示它的激活。 –