Как установить TextColor с помощью цветов setTextColor (ColorsStateList) - программирование
Подтвердить что ты не робот

Как установить TextColor с помощью цветов setTextColor (ColorsStateList)

Мне нужно изменить цвет текста при изменении состояния (нажатие, фокус)...

Как установить цвет текста 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
   }
));

Изменить цвет фона TextView на клике

4b9b3361

Ответ 1

Если вам нужно установить цвета в коде (используя 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
}

Рез/цвет/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>

Ответ 2

Вы должны использовать getColorStateList()

Я также боролся с этой проблемой, если вы хотите использовать state list, вам нужно объявить ее в папке ресурсов color вместо папки drawable и использовать setTextColor(getResources().getColorStateList(R.color.your_colors)).

Ответ 3

вы также можете использовать ContextCompat для загрузки списка состояний цвета

ColorStateList colors = ContextCompat.getColorStateList(this,R.color.my_color_list);