2013-06-26 32 views
9

我想在ListView項目中放置陰影並應用自定義選擇器。但我不知道如何在同一時間申請他們..ListView項目陰影+自定義選擇器

這裏是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> 

和自定義選擇:

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

我曾嘗試選擇適用於整個ListView android:listSelector="@drawable/selector.xml"和陰影ListView項目android:background="@drawable/shadow.xml"但在這種情況下,ListView項目將有陰影,但不會對觸摸作出反應。

謝謝您提前

+0

工作..謝謝^ _ ^ –

回答

8

我找到解決方案。 seletor不出現的原因是Android ListView結構。如果您將List Item的背景設置爲與Selector重疊,那麼您看不到它。解決方案是在Click上使ItemView背景透明。

這裏是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> 

現在,你應該在選擇使用它的ItemView控件! - listview_item_backgroundstate.xml 您需要設置listview_item_backgroundstate.xml爲背景,以您的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> 

,最後你必須設置custom_selector.xmlListViewandroid: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> 

欲瞭解更多信息閱讀本真棒tutorial