2011-12-01 8 views
42

¿Cómo usamos una lista de capas como dibujables para un botón? tengo un botón: Android Uso de la lista de capas para el selector de botón

<item android:state_pressed="true"> 
    <shape> 
     <gradient android:endColor="@color/white" 
      android:startColor="@color/grey_blue_light" android:angle="90" /> 
     <stroke android:width="1dp" android:color="@color/aqua_blue" /> 
     <corners android:radius="3dp" /> 
     <padding android:left="10dp" android:top="10dp" 
      android:right="10dp" android:bottom="10dp" /> 
    </shape> 
</item> 


<item android:state_focused="true"> 

</item> 
<item> 

</item> 

Ahora necesito una capa lista para usarse como una forma cuando se dice que se pulsa estado de botón:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="oval"> 
     <solid android:color="@color/aqua_blue" /> 
    </shape> 
</item> 
<item android:top="1dp" android:left="1dp" android:right="1dp" android:bottom="1dp"> 
    <shape android:shape="oval"> 
     <solid android:color="@color/aqua_blue" /> 
    </shape> 
</item> 

Cómo usamos esta lista de capas en el selector de botones?

Respuesta

114

Paso-1 crea tres layer_list xml diferentes en la carpeta dibujable para tres estados diferentes de botón. ejemplo, el nombre de los xml es layer1.xml, layer2.xml, layer3.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <item> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle" 
      > 

      <gradient 
       android:angle="270" 
       android:startColor="#0000ff" 
       android:endColor="#0000dd" 
       android:type="linear" 
       />  
     </shape> 
    </item> 

</layer-list> 

Paso-2 crear un xml selector nombrado como btn_background.xml y pasar el xml layer_list en el atributo dibujable

<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true" android:drawable="@drawable/layer1"> 

    </item> 

    <item android:state_focused="true" android:drawable="@drawable/layer2"> 

    </item> 

    <item android:drawable="@drawable/layer3">   

    </item> 
</selector> 

paso 3 Establezca el selector xml como fondo del botón android:background="@drawable/btn_background"

+1

Gran respuesta. Pero como tiene un único elemento '' en '', creo que este último puede omitirse. Es decir. ''. Trabajó para mi. – SoftDesigner

0

Simplemente reemplace el shape etiqueta con su layer-list y todo va a funcionar bien.

Cuestiones relacionadas