当我的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>
答案 0 :(得分:66)
创建文件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>
然后使用xml中的@drawable/text_color
(或代码中的R.drawable.text_color
)作为列表视图项的文本颜色。
答案 1 :(得分:1)
除了上面提到的其他内容之外,我想强调一点,取自以下网址。
https://developer.android.com/reference/android/content/res/ColorStateList.html
注意:状态规范列表将按照它们出现在XML文件中的顺序进行匹配。因此,应在文件的前面放置更具体的项目。没有状态规范的项目被认为与任何状态集匹配,并且通常可用作最终项目作为默认值。
重要的是,你在选择器标签的底部有更广泛的条件。希望这有帮助!
答案 2 :(得分:0)
尝试一下...
首先,在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
快乐的编码...