2013-06-26 14 views
9

Ich möchte Shadow bei ListView Element fallen lassen und benutzerdefinierte Selektor anwenden. Aber ich weiß nicht, wie sie zur gleichen Zeit anzuwenden ..ListView Element Shadow + benutzerdefinierte Selektor

Hier ist 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> 

und eigener Selektor:

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

ich versucht habe, Wähler gelten ganze ListView android:listSelector="@drawable/selector.xml" und Schatten zu ListView Element android:background="@drawable/shadow.xml" Aber in diesem Fall wird ListView Element Schatten haben, aber nicht auf Berührung reagieren.

Vielen Dank im Voraus

+0

Arbeit .. danke^_ ^ –

Antwort

8

Ich habe eine Lösung gefunden. Der Grund, warum seletor nicht angezeigt wird, ist die Android ListView-Struktur. Wenn Sie den Hintergrund für List ItemView festlegen, wird der Selector überlagert, sodass Sie ihn nicht sehen können. Die Lösung besteht darin, den ItemView-Hintergrund beim Klick transparent zu machen.

Hier ist 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> 

Jetzt sollten Sie es in Selektor für ItemView verwenden! - listview_item_backgroundstate.xml Sie müssen festlegen listview_item_backgroundstate.xml als Hintergrund zu Ihrem Listview-Element

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

Und endlich haben Sie custom_selector.xml wie in ListView einzustellen. 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> 

Für weitere Informationen lesen Sie diese ehrfürchtige tutorial

Verwandte Themen