我正在为此苦苦挣扎,这显然是一个非常简单的效果,但令人难以置信的是在 Android 中没有找到任何直观的方法。
我有一个 ListView 并且我设法自定义背景图像,以便通过获取新的背景可绘制对象来突出显示所选项目。为此,我创建了一种新样式,我将 android:listSelector 属性设置为指向 StateListDrawable,在该样式中我指定了用于每个状态的可绘制对象。
但是,每个 ListView 项目都是一个 LinearLayout,其中我有两个 TextView。我的目标是能够在选择或按下父级时更改这些 subview 的文本颜色,同时与背景可绘制对象同时进行。我知道有一个 ColorStateList,但没有成功设置它。
有没有人成功让这样的东西工作?
谢谢。
最佳答案
当您的 ListView 受到具有多个 View 的布局的影响时,这些都不是可能的答案。您需要将 subview 设置为:
android:duplicateParentState="true"
现在您可以使用其他人在上面描述的方法来使用选择器声明您的 TextViews 的颜色,例如:
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>
如您所见,@color 值是允许的。希望这会有所帮助。
另外 - android:state_pressed 与 AdapterView.OnItemClickListener 结合使用。
关于android - 如何更改选定/聚焦的 ListView 项目中的字体颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3917288/