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

标签 android listview layout

我正在为此苦苦挣扎,这显然是一个非常简单的效果,但令人难以置信的是在 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/

相关文章:

android - Android中不同屏幕尺寸的布局

android - Firebase 计划为 strip 集成付款

c# - 为什么 IEnumerable<T> 需要调用 ToList 来更新 ListView ?

c# - 无法加载 View 状态

listview - Wicket listview 跳过 `list` 标签

swift - Xcode 8 Storyboard 项目不可选择

android - Timepicker 在电话上被切断

java - 使用 Canvas android拉伸(stretch)图像

android - 将 ImageView 置于 RelativeLayout 的中间 - Android

android - 可扩展的 ListView android 在单击时更改布局