如果我们使用ListView或ExpandableListView,则默认背景为@android:drawable/list_selector_background
。我有一个ExpandableListView,显示按日期分组的数据。我喜欢状态列表list_selector_background drawable并希望保持不同状态的行为。但是对于周末(对于一些列表视图项目),我想定义一个自定义背景。但是这些项仍然应该通过list_selector_background定义的不同状态使用drawable。
我看到了不同的不合适的答案。他们中的大多数人说我应该定义自己的状态列表drawable。
除了不同状态的不同drawable之外,list_selector_background.xml还定义了<item android:state_window_focused="false" android:drawable="@color/transparent" />
所以我认为我定义了自己的状态列表drawable,只需将透明更改为我想要的颜色。问题是用于州的抽屉不公开。我真的想要接近android风格,所以我不想写自己的状态列表drawable与自己的drawables状态。
最后,我使用图层列表drawable编写了一个解决方案。
<?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>
这完全符合所需的行为,但有一个例外:/。我有我的自定义背景,该项目与list_selector_background中为draw事件定义的drawable做出反应。
但不知何故,聚焦状态不使用list_selector_background定义的drawable(<item android:state_focused="true" android:drawable="@drawable/list_selector_background_focus" />
)
所以我很好地问,是否有人可以想象为什么聚焦状态不起作用?我正在使用API级别8开发。如果您需要任何进一步的信息,我想发布。感谢