如果我们使用 ListView 或 ExpandableListView,默认背景是@android:drawable/list_selector_background
。我有一个 ExpandableListView,它显示按日期分组的数据。我喜欢可绘制的状态列表 list_selector_background 并希望保留不同状态的行为。但对于周末(对于某些列表视图项目),我想定义一个自定义背景。但这些项目仍应使用通过 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>
这完全符合所需的行为,但有一个例外:/。我有自定义背景,该项目与 list_selector_background 中为新闻事件定义的可绘制对象进行反应。
但不知何故,聚焦状态不使用 list_selector_background 定义的可绘制对象(<item android:state_focused="true" android:drawable="@drawable/list_selector_background_focus" />
)
所以我请问是否有人能想象为什么聚焦状态不起作用?我正在使用 API 级别 8 进行开发。如果您需要任何进一步的信息,我想发布。谢谢
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)