如何更改选定/重点ListView项目中的字体颜色?

我正在努力,这显然是一个非常简单的效果,但令人难以置信的是没有find任何直觉的方式,在Android做到这一点。

我有一个ListView,我设法定制的背景图像,以便选定的项目获取突出显示一个新的背景绘制。 这是我创build一个新的风格,我设置android:listSelector属性指向一个StateListDrawable ,我已经指定哪些可绘制的用于每个状态。

然而,每个ListView项目是一个LinearLayout,我有两个TextViews。 我的目标是能够改变这些子视图的文本颜色,只要父母被选中或按下,同时背景可绘制。 我知道有一个ColorStateList但没有成功设置。

有没有人得到这样的工作?

谢谢。

当您的ListView受到具有多个视图的布局的影响时,这些都不是可能的答案。 您需要将您的子视图设置为:

android:duplicateParentState="true" 

现在,您可以使用上面描述的方法来使用select器来声明TextView的颜色,例如:

 android:textColor="@drawable/my_row_selector" 

我相信你知道,但select器可以是这样简单的:

 <?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> 

正如你所看到的,@ color值是允许的。 希望这可以帮助。

另外 – android:state_pressed与AdapterView.OnItemClickListener一起使用。

在你的textview propeties

 android:textColor="@color/text_selector" 

在res / color 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> 

为了使它在select上使用下面的代码:

 <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_activated="true"状态。

在为Android 11+(HoneyComb +)部署应用程序时,应该使用

 android:state_activated="true" 

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

 android:state_checked="true" android:state_activated="true" 

当然不要忘记包括

 android:duplicateParentState="true" 

所以视图可以从父列表视图项获得激活/检查状态

你也可以创build一个res/color文件夹,并用下面几行添加一个文件“text_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> 

之后,在TextView中分配:

 android:textColor="@color/text_selector"