2011-09-25 11 views
0

私は各行にTextViewを持つListViewを持っています。私は、異なる状態TextViewのSetTextColorプログラム的に

これは魔法のように動作
<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> 

ためrow.xml

私は色違いを持っ​​ているに設定されていると、デフォルトのcolor.xmlを持っています。しかし、コード内のいくつかの行の色を変更しようとすると、これはうまくいかないようです。 second_color.xmlは同じように見えますが、色は異なります。色は変更されますが、他の状態(デフォルトではありません)では何も変わりません。

私はこのような色を変更する:あなたのxmlファイルが/res/row.xmlで保存されているならば、あなたは R.color.row

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

答えて

7

をそれを参照

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

それを解決!

これをコードで設定するには、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

row.xmlにcolor.xmlが割り当てられている行が設定されています。しかし、私はsecond_color.xmlにそれをいくつかの機会に変更したいと思っています... – johan

+0

私は解決策を見つけました...それを下に掲載します。とにかくありがとう! – johan

+3

実際には動作しません。適切な解決策は 't1.setTextColor(context.getResources()。getColor(R.color.row));' – louiscoquio

関連する問題