2013-08-22 136 views
11

我想爲我的列表視圖中的每個項目設置一些自定義選擇器狀態。我曾嘗試以下」列表背景自定義選擇器

list_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" 
      android:drawable="@drawable/row_selected_background" /> 
    <item android:state_activated="true" 
      android:drawable="@drawable/row_selected_background" /> 
    <item android:state_focused="true" 
      android:drawable="@drawable/row_selected_background" /> 
    <item android:drawable="@drawable/row_background" /> 
</selector> 

list.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <ListView 
      android:id="@android:id/list" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/row_background" 
      android:listSelector="@drawable/list_selector"> 

    </ListView> 
</RelativeLayout> 

出於某種原因,名單未選擇的背景色是因爲它被定義,但上壓/點擊一直是默認的android holo blue的一個列表。我在做什麼錯?

回答

19

適用於列表視圖使用android:state_pressed指定的按鍵狀態。


繪製對象使用:/res/drawable/bg.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="@android:color/holo_red_dark"/> 
</shape> 

選擇使用:/res/drawable/item.xml

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

的ListView:在按下列表項

<ListView 
    android:id="@+id/list" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:saveEnabled="true" 
    android:listSelector="@drawable/item" 
    /> 

結果:

enter image description here

注:列表選擇繪製落後項目視圖,查看項目可能有自己的背景。

+0

這沒有效果 –

+0

@JohnBaum更新。 –

1

第1步:

首先設置row_selector.xml

第2步: 選擇適用於項目的

android:background="@drawable/row_selector" 

第3步: 做一個選擇的名單,list_selector.xml用全透明的狀態擺脫默認狀態。

第4步: 選擇作爲

android:listSelector="@drawable/list_selector"

+0

對不起,這只是一個錯字 –

+0

PLZ請參閱編輯我的帖子 –

+0

如何將所有狀態設置爲透明? –