2013-06-26 21 views
9

Voglio eliminare l'ombra nella voce ListView e applicare anche il selettore personalizzato. Ma non so come applicarle allo stesso tempo ..ListView Item shadow + selettore personalizzato

Ecco 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> 

E selettore personalizzato:

<?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> 

ho cercato di applicare al selettore intero ListView android:listSelector="@drawable/selector.xml" e shadow a ListView elemento android:background="@drawable/shadow.xml" Ma in questo caso l'oggetto ListView avrà ombra ma non reagirà al tocco.

Grazie in anticipo

+0

lavoro .. grazie^_ ^ –

risposta

8

Ho trovato una soluzione. Il motivo per cui il seletore non viene visualizzato è la struttura di ListView di Android. Se si imposta lo sfondo su List ItemView si sovrappone al Selettore, quindi non è possibile vederlo. La soluzione è rendere trasparente lo sfondo di ItemView su Click.

Ecco 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> 

Ora lo deve usare in selettore per ItemView! - listview_item_backgroundstate.xml È necessario impostare listview_item_backgroundstate.xml come sfondo per il vostro articolo 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> 

E alla fine si deve impostare custom_selector.xml come in 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> 

Per maggiori informazioni leggere questa impressionante tutorial

Problemi correlati