2011-09-25 3 views
0

У меня есть ListView с TextView в каждой строке. У меня есть color.xml по умолчанию с устанавливается в row.xmlSetTextColor TextView программно

У меня есть различные цвета для различных состояний

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <!-- pressed --> 
    <item 
     android:color="#ffffff" 
     android:state_pressed="true"/> 
    <!-- focused --> 
    <item android:state_selected="true" 
      android:color="#8b8989"/> 
    <!-- default --> 
    <item android:color="#ffffff"/> 

</selector> 

Это работает как шарм. Но когда я пытаюсь изменить цвет для некоторых строк в коде, это, похоже, не работает. Второй_color.xml выглядит точно так же, но с разными цветами. Цвет изменяется, но для других состояний (не по умолчанию) ничего не меняется.

изменить цвет, как это:

TextView tl = (TextView) v.findViewById(R.id.textlabel); 
tl.setTextColor(getContext().getResources().getColor(R.color.second_color)); 

ответ

7

Решила!

Для установки этого кода необходимо создать ColorStateList.

ColorStateList cl = null; 
          try { 
           XmlResourceParser xrp = getResources().getXml(R.color.live_color); 
           cl = ColorStateList.createFromXml(getResources(), xrp); 
          } catch (Exception ex) {} 

          if(cl != null){ 

           tl.setTextColor(cl); 
          } 
0

если ваш файл XML сохраняется в /res/row.xml то ссылаться на него с R.color.row

TextView tl = (TextView) v.findViewById(R.id.textlabel); 
tl.setTextColor(R.color.row); 
+0

Моя строка задана в row.xml, где color.xml назначается цветом. Однако я хочу изменить его на second_color.xml в некоторых случаях ... – johan

+0

Я нашел решение ... опубликует его ниже. Спасибо, в любом случае! – johan

+3

На самом деле это не работает, правильным решением является 't1.setTextColor (context.getResources(). GetColor (R.color.row));' – louiscoquio

Смежные вопросы