我正在尝试为列表视图中的每个项目设置一些自定义选择器状态。我试过以下“
list_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/row_selected_background" />
<item android:state_activated="true"
android:drawable="@drawable/row_selected_background" />
<item android:state_focused="true"
android:drawable="@drawable/row_selected_background" />
<item android:drawable="@drawable/row_background" />
</selector>
list.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/row_background"
android:listSelector="@drawable/list_selector">
</ListView>
</RelativeLayout>
由于某种原因,列表未选择的背景颜色是定义的。但on on / click始终是列表的默认android holo blue。我做错了什么?
答案 0 :(得分:19)
使用android:state_pressed
指定按下状态。
可绘制使用:/res/drawable/bg.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/holo_red_dark"/>
</shape>
要使用的选择器:/res/drawable/item.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/bg"/>
</selector>
的ListView:
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:saveEnabled="true"
android:listSelector="@drawable/item"
/>
按下列表项的结果:
注意:列表选择器在项目视图后面绘制,项目视图可能有自己的背景。
答案 1 :(得分:1)
第1步:
首先设置row_selector.xml
第2步: 将选择器应用于项目
android:background="@drawable/row_selector"
第3步:
为列表list_selector.xml
创建一个选择器,使所有状态都透明,以消除默认状态。
第4步: 将选择器应用于列表视图
android:listSelector="@drawable/list_selector"