2012-01-05 12 views
21

Los selectores de botones permiten definir un fondo para cada estado del botón, pero ¿cómo se puede definir el estilo de texto del botón para cada estado? Mi objetivo es atenuar un botón cuando está deshabilitado. Así que configuré un fondo gris para el estado de desactivación del botón, pero la única forma en que encontré para atenuar el texto es cambiar su color dinámicamente cuando desactivo el botón ...¿Cómo establecer el estilo de texto de un botón en los selectores?

¿Alguien puede ayudar?

Gracias

<style name="srp_button" parent="@android:style/Widget.Button"> 
    <item name="android:background">@drawable/btn_default</item> 
    <item name="android:textColor">#ffffff</item> <!-- How to specify different color for different state? --> 
    <!-- more stuff --> 
</style> 

estirable/btn_default.xml

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

    <item android:state_enabled="true"><shape> 
      <solid android:color="@color/pink" /> 
      <corners android:radius="6dp" /> 
     </shape></item> 
    <item><shape> 
      <solid android:color="#000000" /> 
      <corners android:radius="6dp" /> 
     </shape></item> 

</selector> 
+0

Por favor, ponga su código que has intentado ... –

+0

pregunto cómo lo hacen compila ​​@ drawable/btn_default sin ningún error de compilación. Obtuve No se encontró ningún recurso que coincida con el nombre de pila en 'android: background' con el valor '@ drawable/btn_default'. –

Respuesta

42

Bien!

Puede definir el color del texto para el estado 4, de forma similar al fondo definido para el Button. Por ejemplo:

nombre de archivo: /res/color/text_color.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="#440000"/> 
    <item android:state_focused="true" android:color="#004400"/> 
    <item android:state_pressed="true" android:color="#000044"/> 
    <item android:color="#444"/> 
</selector> 

Tome este archivo en su estilo Button así:

<style name="srp_button" parent="@android:style/Widget.Button"> 
    <item name="android:background">@drawable/btn_default</item> 
    <item name="android:textColor">@color/text_color</item> <!-- Here is specified text color --> 
</style> 
+1

Guau, ¡es genial! ¡El atributo "android: color" en el elemento del selector no está documentado! ¡Pero realmente funciona! – Lcsky

+1

aquí está el documento http://developer.android.com/guide/topics/resources/color-list-resource.html – AdrianoCelentano

+0

Muchas gracias por mencionar textColor y especialmente su comentario al lado (! - Aquí hay un color de texto especificado ->). No sabía que puedes usar un selector de color normal (con Android: atributos de color) para textColor también, y que puedes usar fondo personalizado y textColor personalizado al mismo tiempo. Estaba buscando en Google y leyendo en Internet durante media hora sobre cómo usar el color del texto para el estado de discapacidad cuando tienes un fondo personalizado (tengo un fondo ondulado), ¡no encontré nada aparte de esto! ¡Gracias! – Metallica

Cuestiones relacionadas