如何在android中按下Button / TextView时更改文本颜色

时间:2015-09-07 11:01:34

标签: android xml

如何使用自定义xml文件更改TextView文本颜色。 当我按下按钮按钮时,文本应该变成白色,当我释放按钮时,文本应该变成黑色。因为我已经将这个background.xml用于所有textview。所以,如果我在一个地方改变它将影响所有的地方。但文字颜色没有变化。

我使用的TextView代码:

<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/btn_add"
    android:background="@drawable/background"
    android:gravity="left"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="5dp"
    android:paddingTop="10dp"
    android:text="@string/student_name"
    android:textColor="@color/black"
    android:textSize="18dp" />

background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

     <item 
         android:drawable="@drawable/bg1"
         android:color="@color/White" 
         android:state_pressed="false"/>

     <item 
         android:drawable="@drawable/bg2"
         android:color="@color/black"  
         android:state_pressed="true"/>

</selector>

2 个答案:

答案 0 :(得分:1)

试试这个:

的TextView

<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/btn_add"
    android:background="@drawable/background"
    android:gravity="left"
    android:paddingBottom="10dp"
    android:state_selected="true"
    android:paddingLeft="10dp"
    android:paddingRight="5dp"
    android:paddingTop="10dp"
    android:text="@string/student_name"
    android:textColor="@drawable/my_text_color"
    android:textSize="18dp" />

抽拉/ my_text_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- pressed -->
    <item android:state_pressed="true" android:color="@color/White"/>
    <!-- focused -->
    <item android:state_focused="true" android:color="@color/White"/>
    <!-- activated -->
    <item android:state_activated="true" android:color="@color/White"/>
    <!-- checked -->
    <item android:state_checked="true" android:color="@color/White"/>

    <!-- default -->
    <item android:color="@color/black"/>

</selector>

在您的班级文件中添加以下代码

textView.setselected(true);

答案 1 :(得分:0)

Sagar Zala 您提供的准则正在运作。我这样用过。

TextView代码:

<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/btn_add"
    android:background="@drawable/background"
    android:gravity="left"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="5dp"
    android:paddingTop="10dp"
    android:text="@string/blood_pressure"
    android:textColor="@drawable/my_text_color"
    android:textSize="18dp" />

background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

     <item 
         android:drawable="@drawable/bg1"
         android:state_pressed="false"/>

     <item 
         android:drawable="@drawable/bg2"
         android:state_pressed="true"/>

</selector>

my_text_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- pressed -->
    <item android:state_pressed="true" android:color="@color/White"/>
    <!-- focused -->
    <item android:state_focused="true" android:color="@color/White"/>
    <!-- activated -->
    <item android:state_activated="true" android:color="@color/White"/>
    <!-- checked -->
    <item android:state_checked="true" android:color="@color/White"/>

    <!-- default -->
    <item android:color="@color/black"/>

</selector>