如何使用setTextColor设置TextColor(ColorsStateList颜色)

Rod*_*igo 49 android textcolor

状态改变时我需要改变文字颜色(按下,对焦)......

如何设置的文本颜色TextView使用ColorsStateList

编辑,解决:

textView.setTextColor(new ColorStateList(
   new int [] [] {
      new int [] {android.R.attr.state_pressed},
      new int [] {android.R.attr.state_focused},
      new int [] {}
   },
   new int [] {
      Color.rgb (255, 128, 192),
      Color.rgb (100, 200, 192),
      Color.White
   }
));
Run Code Online (Sandbox Code Playgroud)

解决方案2

textView.setTextColor(getResources().getColorStateList(R.color.your_colors))
Run Code Online (Sandbox Code Playgroud)

单击时更改TextView的背景颜色

imb*_*izi 78

如果需要在代码中设置颜色(使用ColorStateList),但仍希望将颜色状态保留在XML中,则可能需要使用:

try {
    XmlResourceParser parser = getResources().getXml(R.color.your_colors);
    ColorStateList colors = ColorStateList.createFromXml(getResources(), parser);
    mText.setTextColor(colors);
} catch (Exception e) {
    // handle exceptions
}
Run Code Online (Sandbox Code Playgroud)

RES /颜色/ your_colors.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#222222"/>
    <item android:state_selected="true"
          android:color="#222222"/>
    <item android:state_focused="true"
          android:color="#222222"/>
    <item android:color="#0000ff"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

  • 有一种更简单的方法来实现这个:`mText.setTextColor(getResources().getColorStateList(R.color.your_colors));` (103认同)
  • Ol_v_er的方法(在第一条评论中,不在答案中)对我来说非常有效,所有州都被保留(Android 2.3和4.4). (2认同)

ffl*_*dro 28

你必须使用getColorStateList()

我也在努力解决这个问题,如果你想使用a state list,你需要在color资源文件夹中声明它,而不是drawable文件夹,并使用setTextColor(getResources().getColorStateList(R.color.your_colors)).


Joc*_*aar 5

您还可以使用ContextCompat加载颜色状态列表

ColorStateList colors = ContextCompat.getColorStateList(this,R.color.my_color_list);
Run Code Online (Sandbox Code Playgroud)