如何ListView在每个项目的基础上更改项目的背景颜色.当我android:backgroundColor在ListView项目布局中使用时,我可以实现此目的,但列表选择器不再可见.我可以通过设置drawSelectorOnTop为true 使选择器再次可见,但选择器覆盖整个项目.
有任何想法如何改变这些背景颜色并保持选择器?
PS我宁愿不改变选择器本身.
编辑:GMail应用程序的作者已经设法实现了这一点,所以它绝对是可能的.
警告:这个问题中的XML是错误的,请在混淆自己之前阅读答案!
我一直在墙上撞了一会儿.以下帖子阐明了这一主题,但未能解决我的问题: Android ListView状态列表未通过自定义选择器显示默认项目背景和ListView项目背景
当我选择列表项时,正确的九补丁背景显示完美,但我无法获得最初显示的默认九补丁背景.在我看来,我需要以某种方式设置默认项目背景,但我无法弄清楚如何这样做.
列表显示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/shopListHeader"
/>
<ListView
android:id="@+id/shopList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="0px"
android:divider="#FFFFFFFF"
android:listSelector="@drawable/shop_list_selector"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
选择:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:visible="true">
<!-- the list items are enabled and being pressed -->
<item
android:state_pressed="true"
android:drawable="@drawable/shop_list_item_pressed" />
<item
android:state_selected="true"
android:textColor="#FFFFFFFF" />
</selector>
Run Code Online (Sandbox Code Playgroud)
背景:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:visible="true">
<item
android:state_selected="true"
android:drawable="@android:color/transparent" />
<item
android:drawable="@drawable/shop_list_item" />
</selector>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我已经从参考文献中删除了示例.
您可能还注意到后台选择器未在任何位置引用.我开始在随机的地方扔它(如果应用程序编译添加要么没有效果或导致强制关闭)
当选择一个项目但没有按下时,我也试图阻止文本的颜色变为黑色和灰色(可以通过滚动列表来完成).由于我的背景在中心是黑色,因此选中时文本会变得部分不可见.据我所知,这个添加(选择器中的最后一个项目节点)什么都不做.
有没有人有任何想法让这个荒谬耗时的功能工作?