ListView项目阴影+自定义select器

我想在ListView项目中放置阴影,并应用自定义select器。 但是我不知道如何同时使用它们。

这是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> 

和自定义select器:

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

我试图将select器应用于整个ListView android:listSelector="@drawable/selector.xml"和阴影ListView项目android:background="@drawable/shadow.xml"但在这种情况下,ListView项目将有阴影,不要触摸。

先谢谢你

Solutions Collecting From Web of "ListView项目阴影+自定义select器"

我find了解决办法。 Android的ListView结构是为什么seletor不出现的原因。 如果将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的select器中使用它! – 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> 

最后你必须在ListView设置custom_selector.xmlandroid: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> 

欲了解更多信息阅读这个真棒教程