2013-06-26 16 views
9

Chcę upuścić cień w pozycji ListView, a także zastosować niestandardowy selektor. Ale nie wiem, jak zastosować je w tym samym czasie ..ListView Cień przedmiotu + niestandardowy selektor

Oto shadow.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item > 
     <shape android:shape="rectangle"> 
       <solid android:color="@android:color/darker_gray" /> 
     </shape> 
    </item> 
    <item 
     android:right="1dp" 
     android:bottom="2dp">   
     <shape android:shape="rectangle"> 
       <solid android:color="@android:color/white"/> 
     </shape> 
    </item>   
</layer-list> 

A selektor zwyczaj:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_pressed="false" 
    android:drawable="@android:drawable/color/white" /> 
<item 
    android:state_pressed="true" 
    android:drawable="@drawable/pressed_background_blue" /> 
</selector> 

Próbowałem zastosować wybieraka cały ListView android:listSelector="@drawable/selector.xml" i cień do obiektu ListView android:background="@drawable/shadow.xml" Ale w tym przypadku element ListView będzie miał cień, ale nie będzie reagował na dotyk.

Z góry dziękuję

+0

prace .. dziękuję^_ ^ –

Odpowiedz

8

Znalazłem rozwiązanie. Powodem, dla którego seletor się nie pojawia jest struktura listy Android. Jeśli ustawisz tło na ListViewView, nakłada się Selector, więc nie możesz go zobaczyć. Rozwiązaniem jest uczynienie tła ItemView przezroczystym w Click.

Oto listview_item_shadow.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
       <solid android:color="@android:color/darker_gray" /> 
     </shape> 
    </item> 
    <item 
     android:right="1dp" 
     android:bottom="2dp">   
     <shape android:shape="rectangle"> 
       <solid android:color="@android:color/white"/> 
     </shape> 
    </item>   
</layer-list> 

Teraz należy używać go w selektorze dla ItemView! - listview_item_backgroundstate.xml Musisz ustawić listview_item_backgroundstate.xml jako tło do swojej pozycji ListView

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@android:color/transparent"></item> 
    <item android:state_selected="true" android:drawable="@android:color/transparent"></item> 
    <item android:state_focused="true" android:drawable="@android:color/transparent"></item> 
    <item android:drawable="@drawable/listview_item_shadow"></item> 
</selector> 

I wreszcie trzeba ustawić custom_selector.xml jak w ListView. android:listSelector="@drawable/custom_selector.xml"

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_pressed="false" 
    android:drawable="@android:drawable/color/white" /> 
<item 
    android:state_pressed="true" 
    android:drawable="@drawable/pressed_background_blue" /> 
</selector> 

Aby uzyskać więcej informacji przeczytaj ten niesamowity tutorial