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

alf*_*red 36 layout android listview

我正在努力解决这个问题,这显然是一个非常简单的效果,但令人难以置信的是,在Android中没有找到任何可行的方式.

我有一个ListView,我设法自定义背景图像,以便通过获取新的背景drawable突出显示所选项目.这我创建了一个新的样式,我设置android:listSelector属性指向StateListDrawable,我已指定哪些drawables用于每个状态.

但是每个ListView项都是LinearLayout,其中我有两个TextView.我的目标是能够在选择或按下父项的同时,在背景可绘制的同时更改这些子视图的文本颜色.我知道有一个ColorStateList但是没有成功设置它.

有没有人成功获得这样的工作?

谢谢.

And*_*wPK 68

当ListView被包含多个视图的布局受到损害时,这些都不是可能的答案.您需要将子视图设置为:

android:duplicateParentState="true"
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用其他人已经描述的方法使用选择器声明TextViews的颜色,例如:

android:textColor="@drawable/my_row_selector"
Run Code Online (Sandbox Code Playgroud)

我确定你知道,但选择器可以像下面这样简单:

<?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>
Run Code Online (Sandbox Code Playgroud)

如您所见,允许使用@color值.希望这可以帮助.

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


小智 23

在你的textview propeties中

android:textColor="@color/text_selector"
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

  • 我做了同样的事情.然而,在印刷机上获得改变而不是选择.. (4认同)
  • 为了进行选择,请使用以下代码:`<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>` (4认同)

Man*_*rig 11

为了使其适用于选择,请使用以下代码:

<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>
Run Code Online (Sandbox Code Playgroud)

显然关键是state_activated="true"国家.

  • 这实际上有所帮助,谢谢! (2认同)