Цвет текста TextView изменяется при изменении цвета фона

Я использую TextView как Button (плоский пользовательский интерфейс) в своем приложении для Android. Ниже приведен код

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

Рисуемый фон 'button_background'

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

So when Button is enabled it should have dark orange background otherwise light orange background.

Цвет фона работает нормально в обоих состояниях (включено и отключено) но цвет текста также меняется. Он остается белым во включенном состоянии, но становится темно-серым в выключенном состоянии. Я хочу сохранить его белым в обоих штатах.


person Prateek Saini    schedule 02.11.2015    source источник
comment
попробуйте это определенно поможет вам.   -  person Shivanshu Verma    schedule 02.11.2015


Ответы (2)


В настоящее время я смотрю, как сделать это для вашего селектора. Но на данный момент вы всегда можете сделать это и вызвать его один раз для инициализации, а затем при изменении состояния:

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

textcolorselector.xml ‹= поместить этот файл в доступный для рисования

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

add this line to color.xml file

 <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" />
person Rajesh    schedule 02.11.2015
comment
Это показывает мне, что ошибка textviewcolor недоступна в colors.xml. Вы уверены, что это компилируется? - person Prateek Saini; 02.11.2015
comment
да, у меня работает нормально, обновите свой код color.xml, textcolorselector.xml и layout - person Rajesh; 02.11.2015