2013-06-26 15 views
9

ListViewアイテムに影を落とし、カスタムセレクタを適用したい。私は、セレクタを適用しようとしたListView Item shadow +カスタムセレクタ

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

:しかし、私はここで

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

とカスタムセレクタ

shadow.xml ..です同時にそれらを適用する方法がわかりません全体ListView android:listSelector="@drawable/selector.xml"と影からリストビューアイテム android:background="@drawable/shadow.xml"しかし、この場合、ListViewアイテムは影を持ちますが、触れることはありません。

ありがとうございました

+0

作品を読んで詳細情報については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> 

..あなたに感謝^ _ ^ –

答えて

8

解決策が見つかりました。 seletorが表示されない理由はAndroid ListViewの構造です。 List ItemViewに背景を設定すると、Selectorと重なって見えなくなります。解決策は、クリック時に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項目

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

に背景としてlistview_item_backgroundstate.xmlを設定する必要があり、最後に、あなたはListViewのようcustom_selector.xmlを設定する必要があります。この素晴らしいtutorial