2014-01-13 56 views
0

我有一個ListView,其中每個項目包含一個ImageView和一個TextView,當一個項目被選中時我有一個選擇器將整個項目的背景設置爲強藍色。
我想要的是,當選擇列表項時,我想將ImageView的前景色設置爲白色。如何使用白色給ImageView着色?

這裏是我想達到

enter image description here

什麼,這裏是設備

enter image description here

選擇

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_selected="true" 
    android:drawable="@color/strong_blue" /> 
<item android:drawable="@android:color/transparent" /> 
</selector> 

的代碼在當前狀態這是第四OnItemClickListener的e代碼

void onItemClick(AdapterView<?> parent, View view, int position, long arg3) { 
    view.setSelected(true); 
    ImageView imageView = (ImageView) view.findViewById(R.id.wishListDrawerImageView); 
    imageView.setColorFilter(Color.WHITE, android.graphics.PorterDuff.Mode.MULTIPLY); 
} 

在此先感謝。

UPDATE

謝謝你們了很好的答案,但我想到了圖像在色彩上白色的第二個版本,但遺憾的是,這些圖標是動態分配的,我無法預測哪個圖像是怎麼回事在ListView中顯示,因此我無法設置圖像的白色版本。

回答

1

您不能設置圖像的「前景色」,因爲沒有這種東西。你將不得不切換圖像。您可以更改圖像的顏色,如here所述。我更喜歡第一個解決方案。

但是,我認爲一個更簡單的解決方案是將兩個不同的圖像保存在資源文件夾中 - 一個用灰色,另一個用白色,並在兩者之間切換。

+0

我嘗試設置ColorFilter就像上面的代碼,但它是你應該使用雖然其他任何顏色(如紅色)都沒有問題,但不能用於白色。 但第二個答案(選擇的答案)很有意思,我會嘗試一下,看看結果。 –

0

設置listSelector到你想要的藍色類型選擇,並且在圖像視圖,設置有白色圖像選擇並將其設置爲背景imageview。

imageviews選擇器可以用與listselector相同的方式編寫,只是drawables會有所不同。

希望有幫助!

編輯:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_pressed="true" 
    android:drawable="@drawable/white_image" /> 
<item android:drawable="@drawable/regular_image" /> 
</selector> 
0

PorterDuff.Mode.SRC_ATOP的 insteasd PorterDuff.Mode.MULTIPLY