Подтвердить что ты не робот

Настройка цвета 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 таким образом?

4b9b3361

Ответ 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, а затем вы можете установить цвет текста.