如何定义ColorStateList为TextView的?

问题描述 投票:30回答:3

当我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>
android listview colors listviewitem
3个回答
68
投票

创建文件RES /绘制/ 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
投票

除了别人怎么如上所述,我想强调一点,从下面的网址服用。

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

注:国家规范的名单将针对它们出现的XML文件中的顺序进行匹配。出于这个原因,更具体的项目应提前在文件中放置。没有国家规范的项目被认为是匹配任何状态集合,通常是有用的,作为最终项目被用作默认。

这一点很重要,你必须向在选择标签底部的更广泛的条件。希望这可以帮助!


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)还是禁用(假),

textView.isEnabled = true //when item is highlighted

快乐编码...

© www.soinside.com 2019 - 2024. All rights reserved.