32

当我ListViewItem突出显示时,我希望文本变为白色。我该如何定义这个?

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_focused="true" android:color="@color/testcolor1"/>
   <item android:state_pressed="true" android:state_enabled="false" android:color="@color/testcolor2" />
   <item android:state_enabled="false" android:color="@color/testcolor3" />
   <item android:color="@color/testcolor5"/>
 </selector>
4

3 回答 3

69

创建文件 res/drawable/text_color.xml:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false" android:color="#ffffff" />
    <item android:state_focused="true" android:state_pressed="true" android:color="#ffffff" />
    <item android:state_focused="false" android:state_pressed="true" android:color="#ffffff" />
    <item android:color="#000000" />
</selector>

然后使用@drawable/text_color来自 xml(或R.drawable.text_color来自代码)作为列表视图项的文本颜色。

于 2010-09-30T06:36:04.547 回答
4

尝试这个...

首先,创建一个text_color.xml放置在res/color目录中的颜色状态列表。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="MissingDefaultResource">
  <item android:color="#000000" android:state_enabled="false"/>
  <item android:color="#FFFFFF"/>
</selector>

二、使用

getColorStateList(@NonNull Context context,
            @ColorRes int id)

获取颜色状态列表的方法。

textView.setTextColor(ContextCompat.getColorStateList(context, R.color.text_color))

第三,根据您的要求启用(true)或禁用(false),

textView.isEnabled = true //when item is highlighted
于 2019-02-11T13:48:42.430 回答
3

除了上面其他人所说的之外,我想强调一点,取自以下网址。

https://developer.android.com/reference/android/content/res/ColorStateList.html

注意:状态规范列表将按照它们在 XML 文件中出现的顺序进行匹配。出于这个原因,更具体的项目应该放在文件的前面。没有状态规范的项目被认为与任何状态集匹配,并且通常用作用作默认值的最终项目。

重要的是,您在选择器标记的底部有更广泛的条件。

于 2016-09-19T23:20:49.627 回答