2013-06-26 32 views
9

ListView öğesinde gölge bırakmak ve özel seçiciyi uygulamak istiyorum. Ben seçici uygulamak için çalıştıkListView Öğesi gölge + özel seçici

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

: Ama burada

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> 

Ve özel seçicidir .. bunları aynı anda nasıl uygulanacağını bilmiyorum Tüm ListView android:listSelector="@drawable/selector.xml" ve listView öğesine gölge android:background="@drawable/shadow.xml" Ancak bu durumda ListView öğesi gölgeye sahip olacak ancak dokunmaya tepki vermeyecek.

Teşekkür ederiz Önceden

+0

çalışmalarını okumak ..^_^teşekkür ederim –

cevap

8

Çözüm buldum. Seletor'un görünmemesinin nedeni Android ListView yapısıdır. List ItemView öğesine arka plan belirlerseniz, Selector ile örtüşür, böylece onu göremezsiniz. Çözüm, ItemView arka planını Click'te şeffaf hale getirmektir. İşte

listview_item_shadow.xml geçerli:

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

Şimdi ItemView için selektör kullanmak gerekir! - listview_item_backgroundstate.xml Sen ListView öğesi

<?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çin arka plan olarak listview_item_backgroundstate.xml ayarlamanız gerekir Ve sonunda sen ListView gibi custom_selector.xml belirlemek zorunda. 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> 

fazla bilgi için bu müthiş tutorial