2013-08-22 5 views
11

Próbuję ustawić kilka niestandardowych stanów selektora dla każdego elementu w moim widoku listy. Próbowałem następujących”Niestandardowy selektor dla tła listy

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> 

z jakiegoś powodu, kolor lista zaznaczone tło jest jak jest zdefiniowany. Ale na wciśnięty/kliknięcie jest zawsze domyślnym hologramem androida dla listy Co robię źle?

Odpowiedz

19

Zastosowanie android:state_pressed określić stany przycisku.


rozciągliwej używać: /res/drawable/bg.xml

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

Selector używać: /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" 
    /> 

Wynik na naciśnięcie elementu listy:

enter image description here

Uwaga: selektor Lista jest zasysane z tyłu elementu widoku, poz View może mieć swoje własne tło.

+0

to nie miało żadnego efektu –

+0

@JohnBaum zaktualizowany. –

1

Krok 1:

najpierw ustawić row_selector.xml

Krok 2: zastosować przełącznik do pozycji jako

android:background="@drawable/row_selector" 

Krok 3: Marka selektora do listy list_selector.xml ze wszystkich państw przejrzystych pozbyć się domyślnych stanów.

Krok 4: zastosować przełącznik do pogrupowanych jako

android:listSelector="@drawable/list_selector"

+0

Przepraszam, że tylko literówka –

+0

plz patrz edytował mój post –

+0

jak ustawić wszystkie stany na przejrzyste? –