2009-08-27 14 views
49

Cuando llamo al setEnabled(false) para un objeto TextView, el color del texto no cambia. Esperaba que fuera cambiado a gris. Si elimino la línea android:textColor en mi archivo XML, vuelve a la normalidad.El color de la vista de texto de Android no cambia cuando está deshabilitado

¿Alguna idea?

+0

Aquí está la solución: D http://stackoverflow.com/questions/4692642/android-customized-button-changing-text-color – cesards

+0

Usted tiene que ajustar manualmente el color del texto a lo que usted desea. Al menos eso es lo que he tenido que hacer. – MattC

Respuesta

121

Creo que lo que está sucediendo es que, ya que está reemplazando el texto predeterminado, no está heredando los otros estilos de color de texto. Intente crear un ColorStateList y configurar el atributo textColor en lugar de un color.

En un archivo de color (por ejemplo res/color/example.xml):

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:color="@color/disabled_color" /> 
    <item android:color="@color/normal_color"/> 
</selector> 

entonces en su diseño:

<TextView 
    android:text="whatever text you want" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="@color/example" /> 

Tenga en cuenta, no he hecho esto en un tiempo y Estoy escribiendo mucho de memoria, por lo que puede necesitar un pequeño ajuste. Los documentos ColorStateList (vinculados anteriormente) tienen un ejemplo más desarrollado para el archivo XML de color.

+1

hola gracias, esto ayudó mucho. – Matthias

+0

Feliz de ayudar :) –

+0

Excelente, gracias! – Tomasz

Cuestiones relacionadas