0

我有一个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>

TextViewxml:

<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" />
4

3 回答 3

0

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

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

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

将 onClick 属性添加到您的 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"
        android:onClick="colorise"
 />

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

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

于 2013-09-03T15:44:39.380 回答
0

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

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);
    }
});
于 2013-09-03T15:45:59.393 回答
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"/>

于 2013-09-03T15:49:28.730 回答