2011-12-01 11 views
42

Come utilizziamo un elenco di livelli come disegnabile per un pulsante. Ho un tasto: Android Utilizzo dell'elenco di livelli per il selettore di pulsanti

<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> 

Ora ho bisogno di uno strato-list per essere utilizzato come forma quando dicono che si preme stato del pulsante:

<?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> 

Come utilizziamo questa lista di livelli nel selettore di pulsanti?

risposta

114

Step-1 creare tre diversi xml di layer_list sotto la cartella drawable per tre diversi stati del pulsante. esempio il nome di quelli XML è 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> 

Fase-2 creare un XML selettore chiamato come btn_background.xml e passare il XML layer_list in attributo drawable

<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> 

step-3 Imposta il selettore xml come sfondo del pulsante android:background="@drawable/btn_background"

+1

Ottima risposta. Ma dal momento che hai un singolo elemento '' in '' penso che quest'ultimo possa essere omesso. Cioè ''. Ha funzionato per me – SoftDesigner

0

Basta sostituire il shape tag con il tuo layer-list e tutto funzionerà bene.

Problemi correlati