以编程方式设置TextView的SetTextColor

时间:2011-09-25 21:11:58

标签: android android-listview

我有一个ListView,每行都有一个TextView。我在row.xml中设置了默认的color.xml

我对不同的状态有不同的颜色

<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>

这就像一个魅力。但是当我试图改变代码中某些行的颜色时,这似乎不起作用。 second_color.xml看起来是一样的,但颜色不同。颜色已更改,但对于其他状态(非默认值),没有任何更改。

我改变颜色如下:

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

2 个答案:

答案 0 :(得分: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);
                            } 

答案 1 :(得分:0)

如果你的xml文件保存在/res/row.xml,那么你用 R.color.row

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