如何为TextView定义ColorStateList?

She*_*lam 31 android listview colors listviewitem

当我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>
Run Code Online (Sandbox Code Playgroud)

Kon*_*rov 68

创建文件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>
Run Code Online (Sandbox Code Playgroud)

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

  • 那应该是res/color (43认同)
  • 如果以编程方式设置文本颜色,请调用Context.getResources().getColorStateList(R.drawable.text_color)以获取ColorStateList,并将其传递到采用ColorStateList的EditText.setTextColor方法中.不要只是将资源ID作为int传递(就像我做的那样......呃!). (7认同)
  • 是的,并称为@ color/text_color.@color可以指向颜色或ColorStateList. (4认同)
  • 有点像 TextView 上的 android:textColor="@drawable/text_color" 。 (2认同)

Sil*_*uti 8

尝试这个...

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>
Run Code Online (Sandbox Code Playgroud)

二、使用

getColorStateList(@NonNull Context context,
            @ColorRes int id)
Run Code Online (Sandbox Code Playgroud)

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

textView.setTextColor(ContextCompat.getColorStateList(context, R.color.text_color))
Run Code Online (Sandbox Code Playgroud)

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

textView.isEnabled = true //when item is highlighted
Run Code Online (Sandbox Code Playgroud)