如何更改ListViews state_focus和state_pressed颜色

时间:2011-07-12 06:23:42

标签: android listview android-listview

我花了很多时间试图弄清楚这一点而没有任何成功。

我基本上是在点击列表项时更改列表项的颜色。

我创建了一个选择器xml文件并将其存储在res / color / red_background.xml

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
      android:color="#ffff0000"/> <!-- pressed -->
<item android:state_focused="true"
      android:color="#ff0000ff"/> <!-- focused -->
<item android:color="#ff000000">
</item> <!-- default -->
</selector>

然后我尝试在list.xml中将listview颜色更改为透明,在main.xml中我在listview中使用了android:listselector属性并将red_background传递给它。

<ListView 
android:id="@+id/main_list"
android:listSelector="@color/red_background"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
></ListView>

每次运行程序时,如果我删除“android:listSelector =”@ color / red_background“程序运行正常,它会强制关闭。

我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以通过以下两个步骤实现:

Step1 :将颜色移至color.xml资源文件:

<color name="color_list_press">#ffff0000</color>
<color name="color_list_focused">#ff0000ff</color>
<color name="color_list_default">#ff000000</color>

Step2:从android:color更改为android:drawable

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- pressed -->
    <item android:state_pressed="true"
          android:drawable="@color/color_list_press"/>

    <!-- focused --> 
    <item android:state_focused="true"
          android:drawable="@color/color_list_focused"/>

      <!-- default --> 
    <item android:drawable="@color/color_list_default"/>
</selector>

此致

答案 1 :(得分:1)

列表视图中应为android:listSelector="@drawable/red_background",您需要将red_background.xml放在可绘制文件夹中