Настройка цвета TextView на <селектоp> программно
У меня есть следующий селектор, определенный в файле XML под res/color/redeemlist_item_color.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="#FFFFFF" /> <!-- pressed -->
<item android:state_selected="true"
android:color="#FFFFFF" /> <!-- focused -->
<item android:color="#000000" /> <!-- default -->
</selector>
У меня также есть TextView
в макете ListView
. Когда я устанавливаю android:textColor
в этом TextView
в указанный выше селектор в XML, тогда цвет изменяется правильно, когда элемент выбран. Однако я пытаюсь установить этот ресурс программно следующим образом:
holder.label.setTextColor(R.color.redeemlist_item_color);
При настройке таким образом цвет больше не изменяется. Может ли селектор быть назначен TextView
таким образом?
Ответы
Ответ 1
Думаю, вам может понадобиться добавить findViewById
или что-то из этого сорта
Изменить: приведенное выше неверно в соответствии с моим комментарием, правильный ответ
setTextColor(getResources().getColorStateList(R.color.redeemlist_item_color));
Ответ 2
Вы должны использовать getColorStateList()
Я также боролся с этой проблемой, если вы хотите использовать state list
, вам нужно объявить ее в папке ресурсов color
вместо папки drawable
и использовать setTextColor(getResources().getColorStateList(R.color.redeemlist_item_color))
.
Ответ 3
Вы можете попробовать:
holder.label.setTextColor(GetResources() GetColor (R.color.redeemlist_item_color).);
вместо:
holder.label.setTextColor(R.color.redeemlist_item_color);
Ответ 4
Расман прав. Вам нужно указать TextView ID, android: id = "@+/something". Вы получаете ссылку на эту информацию, используя этот идентификатор и findViewById, а затем вы можете установить цвет текста.