11

我正在尝试为列表视图中的每个项目设置一些自定义选择器状态。我已经尝试了以下“

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>

列表.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>

出于某种原因,列表未选择的背景颜色与定义的一样。但是按下/单击始终是列表的默认 android 全息蓝色。我究竟做错了什么?

4

2 回答 2

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
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:saveEnabled="true"
    android:listSelector="@drawable/item"
    />

按下列表项的结果:

在此处输入图像描述

注意:列表选择器绘制在Item View后面,Item View可能有自己的背景。

于 2013-08-22T16:32:36.583 回答
1

步骤1 :

首先设置row_selector.xml

第 2 步: 将选择器应用于项目

android:background="@drawable/row_selector"

第 3 步: 为列表创建一个选择器,使list_selector.xml所有状态透明以摆脱默认状态。

第 4 步: 将选择器应用于列表视图

android:listSelector="@drawable/list_selector"

于 2013-08-22T16:31:27.760 回答