我有一个列表视图,我想以自定义方式突出显示选定的项目。我在适配器的getView
方法中设置每个项目属性,包括itemView.setSelected(true)
.
主布局通过以下方式定义列表视图:
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="multipleChoice"
android:listSelector="@drawable/list_selector" />
(玩选择模式也无济于事)。
list_selector是一个几乎空的存根:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@android:color/transparent" />
</selector>
我不需要整个列表视图的特定样式,所以我会保留一个默认样式,但是根据这个答案,我们需要一个列表视图的选择器才能使项目选择器工作。无论如何,没有list_selector问题仍然存在。
列表视图项目布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:background="@drawable/listitem_background"
android:orientation="vertical">
它引用了以下listitem_background选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:drawable="@android:color/white" />
<item android:drawable="@android:color/transparent" />
</selector>
问题是,所选项目没有白色背景。
例如,如果我将listitem_backgroundandroid:state_selected="true"
中的选择器更改为,则选择器开始工作,即如果触摸项目,项目背景将变为白色。android:state_pressed="true"
所以,我想,选择器或我选择项目的方式都有错误。
我可以通过从 Java 设置背景或利用可检查状态来编写解决方法,但我想了解并修复当前选择器的问题。提前致谢。