2014-06-10 186 views
0

我看了很多SO問題,無法弄清楚這一點。我設法使用選擇器來更改ListView的高亮顏色 - 但是如何設置正常(未按下)的背景顏色?Android ListView行背景顏色

下面的XML不起作用,因爲只有在項目被按下後,纔會將我的行項目背景更改爲黑色。我應該怎麼做?

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:exitFadeDuration="@android:integer/config_mediumAnimTime"> 
    <item android:state_focused="true" android:drawable="@color/row_hilight"/> 
    <item android:state_pressed="true" android:drawable="@color/row_hilight"/> 
    <item android:state_pressed="false" android:drawable="@color/black"/> 
</selector> 

回答

1

你需要有一個沒有狀態的默認狀態。

此外,您還需要刪除android:state_pressed="false",這是因爲它具有與默認狀態相同的功能。

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:exitFadeDuration="@android:integer/config_mediumAnimTime"> 
    <item android:state_focused="true" android:drawable="@color/row_hilight"/> 
    <item android:state_pressed="true" android:drawable="@color/row_hilight"/> 
    <item android:state_pressed="false" android:drawable="@color/black"/> //delete this 
    <item android:drawable="@color/black"/> //add this 
</selector> 
+0

真的嗎?我以爲我嘗試過這樣做,它的確與「刪除這條線」一樣。當我再次回到家時,我會再試一次。謝謝。 – SparkyNZ

+0

@SparkyNZ okie,用你的結果更新我 –

+0

嗨Rod。我擔心它仍然會做同樣的事情。我的ListView包含Android平板電腦上實際上爲白色的行,但在觸摸行後,它們變爲黑色。如果我觸摸另一行,則該行會變回白色,並且新觸摸的行會變爲黑色 - 所以如果您遵循,它會顯示「已選擇」狀態,而不是默認行狀態。 – SparkyNZ

1

就在年底增加一個項目:

<item android:drawable="@color/default_color"/> 

從文檔state list drawables

在每個狀態變化,狀態列表遍歷從上到下 和使用與當前狀態匹配的第一個項目 - 選擇不基於「最佳匹配」,而僅僅是第一個項目 臨時t符合國家的最低標準。

因此,如果沒有特定標準的項目將匹配,如果沒有其他人做。

+0

謝謝,但@色/ default_color結果XML中的錯誤。 @ color/transparent(在我的colors.xml文件中定義爲#00000000)似乎將該行返回到其先前的背景色。 – SparkyNZ

+0

Ahem,默認顏色只是一個例子。你應該把自己的顏色放在那裏! : - | – matiash

+0

好的:-)不知道default_color是否意味着「使用系統默認顏色」或其他。謝謝您的幫助。 – SparkyNZ