Тень списка ListView + пользовательский селектор

Я хочу скрыть тень в элементе ListView, а также применить настраиваемый селектор. Но я не знаю, как их применять одновременно.

Вот тень.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" и тень к элементу android:background="@drawable/shadow.xml" ListView android:background="@drawable/shadow.xml" Но в этом случае элемент ListView будет иметь тень, T реагируют на касание.

заранее спасибо

Solutions Collecting From Web of "Тень списка ListView + пользовательский селектор"

Я нашел решение. Причина, по которой seletor не появляется, – это структура Android ListView. Если вы установите фон в List ItemView, он перекрывает Селектор, поэтому вы не можете его увидеть. Решение состоит в том, чтобы сделать ItemView фоном прозрачным на клике.

Вот listview_item_shadow.xml : 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> 1 <?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.xml как в ListView . 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> 

Для получения дополнительной информации прочитайте этот удивительный учебник