更改背景颜色时TextView文本颜色会发生变化

时间:2015-11-02 07:25:59

标签: android android-layout textview android-drawable xml-drawable

我在我的Android应用程序中使用TextView作为Button(平面UI)。以下是代码

<TextView
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:background="@drawable/button_background"
            android:enabled="false"
            android:gravity="center"
            android:paddingBottom="16dp"
            android:paddingTop="16dp"
            android:text="Sign Up"
            android:textColor="@color/white"
            android:textSize="16sp"
            android:textStyle="bold" />

背景drawable'button_background'是

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#FCD5A5" android:state_enabled="false" />
<item android:drawable="#F7941E" />

因此当Button 启用时,它应该具有深橙色背景,否则会显示浅橙色背景。

背景色适用于两种状态(启用和禁用)但文本颜色也会发生变化。它在启用状态下保持白色,但在禁用状态下更改为深灰色。我想在两个州保持白色。

2 个答案:

答案 0 :(得分:0)

我目前正在研究如何为您的选择器执行此操作。但是现在,您可以随时执行此操作并调用一次进行初始化,然后再进行状态更改:

private void updateTextColor(TextView view, Context context) {
    if (!view.isEnabled()) {
        view.setTextColor(context.getResources().getColor(android.R.color.white));
    }
}

答案 1 :(得分:0)

textcolorselector.xml&lt; =将此文件放入drawable

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

<item android:color="@color/general_blue" android:state_enabled="true"></item>
<item android:color="@color/general_gray" android:state_enabled="false"></item>
<item android:color="@color/general_blue"></item>

将此行添加到color.xml文件

 <drawable name="textviewcolor">@drawable/textcolorselector</drawable>

并最终将其应用于您的布局

<TextView
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:background="@drawable/button_background"
        android:enabled="false"
        android:gravity="center"
        android:paddingBottom="16dp"
        android:paddingTop="16dp"
        android:text="Sign Up"
        android:textColor="@color/textviewcolor" // <== i made change here!
        android:textSize="16sp"
        android:textStyle="bold" />