Android: textColor del botón deshabilitado en el selector no se muestra?

Estoy tratando de hacer un botón con un selector mi botón puede tener los siguientes estados:

  • Habilitado Deshabilitado
  • Presionado / No Presionado

Según los estados mencionados anteriormente. Necesito manipular los botones:

  • Color de texto
  • imagen de fondo

El botón comienza mi ser deshabilitado por lo que debe tener el textColor deshabilitado y el fondo de botón desactivado. ¡Pero puedo ver el textColor del defecto (especificado en estilo) y NINGUNA imagen de fondo!

Aquí está mi selector button_selector.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:state_enabled="false" android:textColor="#9D9FA2" android:drawable="@drawable/button" /> <item android:state_pressed="true" android:state_enabled="true" android:drawable="@drawable/button_pressed"/> <item android:state_pressed="true" android:state_enabled="false" android:textColor="#9D9FA2" android:drawable="@drawable/button"/> <item android:state_pressed="false" android:state_enabled="true" android:drawable="@drawable/button"/> </selector> 

Y aquí está mi declaración de botón en mi layout.xml

  <Button android:id="@+id/reserve_button" android:text="@string/reserve_button" android:layout_width="120dp" android:layout_height="40dp" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:paddingRight="15dp" android:layout_gravity="left" style="@style/buttonStyle" android:background="@drawable/button_selector" /> 

Y finalmente este es mi estilo (donde está configurado mi textColor predeterminado)

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="buttonStyle"> <item name="android:textStyle">bold</item> <item name="android:textColor">#282780</item> <item name="android:textSize">18sp</item> </style> </resources> 

¡Por favor ayuda!

También es necesario crear una StateList para los colores de texto que identifican diferentes estados.

Haz lo siguiente:

  1. Cree otro archivo XML en res\color llamado algo como text_color.xml .

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- disabled state --> <item android:state_enabled="false" android:color="#9D9FA2" /> <item android:color="#000"/> </selector> 
  2. En su style.xml , ponga una referencia a ese archivo text_color.xml como sigue:

     <style name="buttonStyle"> <item name="android:textStyle">bold</item> <item name="android:textColor">@color/text_color</item> <item name="android:textSize">18sp</item> </style> 

Esto debería resolver su problema.

La solución más fácil es establecer el filtro de color a la imagen de fondo de y el botón como he visto aquí

Puede hacer lo siguiente:

 if ('need to set button disable') button.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY); else button.getBackground().setColorFilter(null); 

Espero haber ayudado a alguien …

1.Create una carpeta de color en / res / carpeta y en la carpeta de color crear en xml:

Text_color_selector.xml

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- disabled state --> <item android:state_enabled="false" android:color="#776678" /> <item android:color="#ffffff"/> </selector> 

2.Now Crear un diseño xml: –

  <Button android:id="@+id/button_search" android:layout_width="652dp" android:layout_height="48dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="18dp" android:background="@android:color/transparent" android:text="Hello Bhaskar" android:textColor="@color/text_color_selector"/> 
 <Button android:id="@+id/reserve_button" android:text="@string/reserve_button" android:layout_width="120dp" android:layout_height="40dp" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:paddingRight="15dp" android:layout_gravity="left" style="@style/buttonStyle" android:background="@drawable/button_selector" /> 

No puedo ver diabling de su botón en su xml de la disposición. Agregue esto a su disposición del botón.

 android:enabled="false" 

Así que su disposición del botón será,

 <Button android:id="@+id/reserve_button" android:text="@string/reserve_button" android:layout_width="120dp" android:layout_height="40dp" android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:enabled="false" android:paddingRight="15dp" android:layout_gravity="left" style="@style/buttonStyle" android:background="@drawable/button_selector" /> 
 <item android:state_enabled="true"> </item> <item android:state_enabled="false"> </item> <item android:state_pressed="true" > </item> 

Espero que funcione!

  • Android scrollview quitar la luz azul
  • "TransformerException: se esperaba un paso de ubicación" en android xpath
  • Ancho del elemento RecyclerView layout_width = "match_parent" no coincide con el padre
  • Múltiples animaciones en 1 imageview android
  • Nuevo en Android - Dibujo de una vista en tiempo de ejecución
  • Cómo agregar niños a childnodes mediante el documento jsoup
  • ¿Por qué la gravedad no funciona cuando se aplica al diseño relativo?
  • ¿Cómo configurar el icono de cada ficha en un fragmentopageradapter a una animación gif?
  • Establecer el modo spinner en XML
  • InvocationTargetException sobre inflar un xml - android
  • Android Studio - No se puede inflar la etiqueta de vista sin atributo de clase
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.