如何更改选定/重点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"