Элемент ListView с list_selector_background в качестве рисованного слоя LayerList - PullRequest
4 голосов
/ 18 августа 2011

Если мы используем ListView или ExpandableListView, фон по умолчанию будет @android:drawable/list_selector_background. У меня есть ExpandableListView, который показывает данные, сгруппированные по дате. Мне нравится список списков состояний list_selector_background, и я хочу сохранить поведение для разных состояний. Но на выходные (для некоторых элементов списка) я бы хотел определить собственный фон. Но эти элементы должны по-прежнему использовать Drawables для различных состояний, определенных через list_selector_background. Я видел разные не подходящие ответы. Большинство из них говорят, что я должен определить свой собственный список состояний. List_selector_background.xml определяет, помимо разной прорисовки для разных состояний, <item android:state_window_focused="false" android:drawable="@color/transparent" />

Итак, я подумал, что я определил свой собственный список состояний, который можно нарисовать, и просто изменил прозрачность на желаемый цвет. Проблема заключается в том, что используемые для штатов материалы не являются публичными. Я действительно хочу быть ближе к стилю Android, поэтому я не хочу писать свой собственный список состояний, который можно рисовать с собственными объектами для состояний.

В конце я написал решение, используя список слоев, который можно нарисовать.

<?xml version="1.0" encoding="utf-8"?>
  <layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item 
       android:drawable="@color/DarkBlue"
       android:id="@+id/background" />

    <item 
       android:drawable="@android:drawable/list_selector_background"
       android:id="@+id/list_selector_background" />

  </layer-list>

Это идеально соответствует желаемому поведению с одним исключением: /. У меня есть свой собственный фон, и элемент реагирует с drawable, определенным в list_selector_background для событий прессы. Но каким-то образом сфокусированное состояние не использует drawable, определенный list_selector_background (<item android:state_focused="true" android:drawable="@drawable/list_selector_background_focus" />)

Так что я любезно спрашиваю, может ли кто-нибудь представить, почему сфокусированное состояние не работает? Я занимаюсь разработкой с уровнем API 8. Если вам нужна дополнительная информация, я хотел бы опубликовать. Спасибо

...