android - 如何更改 ListView state_focused 和 state_pressed 颜色

标签 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 个步骤实现:

第一步:将颜色移动到color.xml资源文件:

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

第 2 步: 从 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>

问候,

关于android - 如何更改 ListView state_focused 和 state_pressed 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6660271/

相关文章:

android - 不接受 Android SDK 平台 23 包的许可证

android - react-native run-android DeviceException 无法创建 ADB 桥

android - FFMPEG 在单个命令中缩放和裁剪

android - 如何在模拟器上显示 map

listview - 查询 ListView 中每一项的 SharedPreferences

java - Listview 上的 setOnItemClickListener 扩展 Activity

android - 尝试设置自定义 arrayAdapter 并使用 listView.setAdapter 方法获取空指针异常,尽管有明显的途径

android - 在 android 中滚动 listView 时重新加载图像

java - ListView 内的复选框状态在 Android 中不能按相反顺序工作

android - java.io.IOException : Is a directory Android 异常