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