Android 如何更改选定/聚焦的ListView项目中的字体颜色?

Android 如何更改选定/聚焦的ListView项目中的字体颜色?,android,listview,layout,Android,Listview,Layout,我正在努力解决这个问题,这显然是一个非常简单的效果,但令人难以置信的是,在安卓系统中还没有找到任何直观的方法 我有一个ListView,并且我设法自定义了背景图像,以便通过获得新的可绘制背景来突出显示所选项目。我这样做是为了创建一种新样式,其中我将android:listSelector属性设置为指向一个StateListDrawable,其中我指定了每个状态使用哪些Drawable 但是,每个ListView项都是一个线性布局,其中我有两个文本视图。我的目标是能够在选择或按下父视图时更改这些子

我正在努力解决这个问题,这显然是一个非常简单的效果,但令人难以置信的是,在安卓系统中还没有找到任何直观的方法

我有一个ListView,并且我设法自定义了背景图像,以便通过获得新的可绘制背景来突出显示所选项目。我这样做是为了创建一种新样式,其中我将android:listSelector属性设置为指向一个StateListDrawable,其中我指定了每个状态使用哪些Drawable

但是,每个ListView项都是一个线性布局,其中我有两个文本视图。我的目标是能够在选择或按下父视图时更改这些子视图的文本颜色,同时更改背景可绘制视图的颜色。我知道有一个颜色状态列表,但尚未成功设置该列表

有人成功地让这样的东西发挥作用了吗


谢谢。

在您的textview属性中

android:textColor="@color/text_selector"
分辨率/颜色 text_selector.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="YOUR_CUSTOM_COLOR" />
    <item android:state_selected="true" android:color="YOUR_CUSTOM_COLOR" />
    <item android:color="YOUR_CUSTOM_COLOR" />
</selector>

当您的ListView因具有多个视图的布局而受损时,这两个问题都不是可能的答案。您需要将子视图设置为:

android:duplicateParentState="true"
现在,您可以使用上面其他人描述的方法,使用选择器声明TextView的颜色,例如:

android:textColor="@drawable/my_row_selector"
我相信您知道,但是选择器可以简单到:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="@color/white" />
    <item android:color="@color/black" />
</selector>

如您所见,@颜色值是允许的。希望这有帮助


另外-android:state\u pressed与AdapterView.OnItemClickListener一起使用。

为了使其在选择时起作用,请使用以下代码:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#fff"/>
    <item android:state_activated="true" android:color="#fff"/>
    <item android:color="#000" />
</selector>


显然,关键是
state\u activated=“true”
state.

当您为Android 11+(蜂巢+)部署应用程序时,您应该使用

对于所选列表状态。 对于早期版本,请使用以下组合:

当然,别忘了包括


因此,视图可以从父列表视图项中获取激活/选中状态。您还可以创建
res/color
文件夹,并添加一个文件“text\u selector.xml”,其中包含以下行:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_activated="true" android:color="#f0f"/>
    <item android:state_pressed="true" android:color="#f0f"/>
    <item android:color="#000"/>
</selector>

这方面没有太多的信息-我在为ListView使用自定义背景时遇到了同样的问题,当用户成功选择一个项目时,该背景对用户来说是不可见的。谢天谢地,他挽救了这一天。我在下面留下了一个答案——很好的问题,因为我知道你的问题会改善社区。谢谢。也适用于奇特的choiceModes等。我只是将文本选择器的状态设置为与列表选择器中的状态匹配
duplicateParentState
是关键。@AndrewPK伙计,你太棒了!它在droid 4.3上不起作用,4.4焦点文本颜色与正常颜色相同,我试过这样做,它的效果很好,为了进行选择,请使用以下代码:
它在droid 4.3上不起作用,4.4焦点文本颜色与普通颜色相同伟大的解决方案,我尝试使用一个可绘制的选择器,但它不起作用。@Mr.Fish,谢谢!
android:state_checked="true"
android:state_activated="true"
android:duplicateParentState="true"
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_activated="true" android:color="#f0f"/>
    <item android:state_pressed="true" android:color="#f0f"/>
    <item android:color="#000"/>
</selector>
android:textColor="@color/text_selector"