2011-10-13 13 views
5

Tengo algunos problemas al administrar la Lista de estado de Android para un botón. Especifiqué algún elemento de Shaw drwable para diferentes estados, pero también necesito cambiar textColor dependiendo del estado actual.Android - ¿Cómo combinar Shape drwable y text color diferentes estados para el botón?

Mi lista del estado real XML es:

<?xml version="1.0" encoding="utf-8"?>  
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true"> 
     <shape> 
      <gradient 
       android:startColor="@color/white" 
       android:endColor="@color/light_gray" 
       android:angle="270" /> 
      <stroke 
       android:width="3dp" 
       android:color="@color/classic_red1" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 

    <item> 
     <shape> 
      <gradient 
       android:startColor="@color/classic_red1" 
       android:endColor="@color/classic_red2" 
       android:angle="270" /> 
      <stroke 
       android:width="2dp" 
       android:color="@color/white" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
</selector> 

necesito también para cambiar textColor basado en estos 2 estados. Gracias de antemano.

Respuesta

24

selector para el botón de BG:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true"> 
    <shape> 
     <gradient 
      android:startColor="@color/white" 
      android:endColor="@color/light_gray" 
      android:angle="270" /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/classic_red1" /> 
     <corners 
      android:radius="3dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 

</item> 

<item android:state_focused="true"> 
    <shape> 
     <solid android:color="#424242" /> //another custom shape here for focus state 
    </shape> 
</item> 

<item> 
    <shape> 
     <gradient 
      android:startColor="@color/classic_red1" 
      android:endColor="@color/classic_red2" 
      android:angle="270" /> 
     <stroke 
      android:width="2dp" 
      android:color="@color/white" /> 
     <corners 
      android:radius="3dp" /> 
     <padding 
      android:left="10dp" 
      android:top="10dp" 
      android:right="10dp" 
      android:bottom="10dp" /> 
    </shape> 

</item> 

selector para el color de texto del botón:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:color="@color/white" /> <!-- pressed --> 
    <item android:color="@color/black" /> <!-- default/unchecked --> 
</selector> 
+0

Aaargh !! Qué tonto ... Pensé en tener que poner todo en el recurso dibujable de fondo. ¡Muchas gracias! –

+0

¡De nada! :) – androidu

+0

y el selector BG es un xml en el directorio dibujable, donde el color del texto es un xml en el directorio de colores - vea http://stackoverflow.com/questions/8743584/how-to-set-the-text -style-of-a-button-in-selectores – jobwat

Cuestiones relacionadas