Estoy tratando de hacer un botón con el estado, pulse y seleccione,
Yo ya hice lo mismo con las pestañas y funciona, pero no sé por qué aquí no funciona.
Lo he hecho como este:

button_sel.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle">
    <gradient android:startColor="@color/azulado" 
              android:endColor="@color/azulBrillante"
              android:angle="270" />
     <corners android:radius="@dimen/corner_radius" />
     <stroke android:width="2px" 
             android:color="@color/blanco" />
 </shape>

button_unsel.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle">
    <gradient android:startColor="@color/botonesD" 
              android:endColor="@color/botones"
              android:angle="270" />
    <corners android:radius="@dimen/corner_radius" />
    <stroke android:width="2px" 
            android:color="@color/blanco" />
</shape>

Y el selector, button.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_sel"  
          android:state_selected="true" 
          android:state_pressed="true"/>
<item android:drawable="@drawable/button_unsel" 
      android:state_selected="false" 
      android:state_pressed="false"/>
</selector>

Y aquí me llame la imagen como fondo:

 <style name="button">
    <item name="android:background">@drawable/button</item>
    <item name="android:textSize">@dimen/text_size</item>
    <item name="android:padding">@dimen/padding_button</item>
    <item name="android:textColor">@color/blanco</item>
 </style>

Gracias!!!!

2 Comentarios

  1. 53

    El primer elemento en el selector se utiliza solamente, cuando se pulsa el botón Y selecciona. Si desea utilizar button_sel cuando el botón está presionado O seleccionado, usted debe hacer algo como esto:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/button_sel" android:state_selected="true" />
        <item android:drawable="@drawable/button_sel" android:state_pressed="true" />
        <item android:drawable="@drawable/button_unsel" />
    </selector>

    Los artículos son evaluados desde la parte superior a la parte inferior, el último es el valor predeterminado. Aunque no estoy seguro de si state_selected tiene sentido para los botones.

    • Gracias. Fue eso!!
  2. 8

    Puede utilizar de forma inline elemento.

       <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_pressed="true" >
                <shape....>
            </item>
            <item android:state_selected="true" >
                <shape....>
            </item>
            <item android:state_pressed="true" android:state_selected="true" >
                <shape...>
            </item>
       </selector>

    Por ejemplo :

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_selected="true" >
            <shape
                android:shape="rectangle">
                <gradient android:startColor="@color/md_amber_300"
                    android:endColor="@color/md_amber_50"
                    android:angle="270" />
                <corners android:radius="@dimen/fab_margin" />
                <stroke android:width="2px"
                    android:color="@color/primaryColorDark_orange" />
            </shape>
        </item>
        <item android:state_pressed="true" >
            <shape
                android:shape="rectangle">
                <gradient android:startColor="@color/md_amber_300"
                    android:endColor="@color/md_amber_50"
                    android:angle="270" />
                <corners android:radius="@dimen/fab_margin" />
                <stroke android:width="2px"
                    android:color="@color/primaryColorDark_orange" />
            </shape>
        </item>
        <item android:state_pressed="true" android:state_selected="true" >
            <shape
                android:shape="rectangle">
                <gradient android:startColor="@color/md_teal_500"
                    android:endColor="@color/md_blue_400"
                    android:angle="270" />
                <corners android:radius="@dimen/fab_margin" />
                <stroke android:width="2px"
                    android:color="@color/md_amber_A400" />
            </shape>
        </item>
    </selector>

Dejar respuesta

Please enter your comment!
Please enter your name here