通过选择器标签更改TextView颜色

时间:2013-09-03 15:36:25

标签: android

我有一个TextView,我希望通过点击它来更改颜色并在退出应用程序后保存,我在可绘制文件夹中的xml文件中使用了选择器标记,但问题是默认颜色是正确但没有任何反应点击为什么?

选择器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="#FFA500"/>
<item android:color="#FF0000"/>
</selector>

TextView xml:

<TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="35dp"
        android:text="Transferef Money"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="@drawable/selector" />

3 个答案:

答案 0 :(得分:0)

虽然可以通过点击处理程序更改颜色

TextView textView = new TextView(this);
  textView.setOnClickListener(new OnClickListener() {

      @Override
         public void onClick(View arg0) {
             textView.setTextColor(Color.BLACK);
      } 
});

向XML添加onClick属性

<TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="35dp"
        android:text="Transferef Money"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="@drawable/selector"
        android:onClick="colorise"
 />

然后在colorise方法中设置颜色。

此外,我认为状态不会通过XML文件保存,因此您必须以编程方式处理它。

答案 1 :(得分:0)

您可以完全避免XML并在Java活动类中专注于它:

TextView lbl = (TextView)findViewById(R.id.myTextView);
lbl.setOnClickListener (new View.OnClickListener()
{
    public void onClick(View v)
    {
        TextView lbl = (TextView)findViewById(R.id.myTextView);
        lbl.setTextColor(Color.parseColor("#FF0000"));
        lbl.setTextColor(Color.rgb(int, int, int));
        lbl.setTextColor(Color.RED);
    }
});

答案 2 :(得分:0)

首先在colors.xml中定义颜色,并在选择器中使用它们,这对我很有用。 例如:

<item android:state_focused="true" android:color="@color/blue_2"/>
<item android:state_pressed="true" android:color="@color/blue_2"/>
<item android:state_checked="true" android:color="@color/blue_2"/>
<item android:color="@color/black_1"/>