2012-11-18 5 views
22

Ich versuche, eine Schaltfläche mit Zustand zu drücken und wählen, Ich habe bereits das gleiche mit Tabs und es funktioniert, aber ich weiß nicht, warum hier nicht funktioniert. Ich habe es so gemacht:Android-Taste wählen und drücken Sie ausziehbare

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> 

Und der Wähler, 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> 

Und hier bin Rufen Sie den Zeichenbereich als Hintergrund auf:

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

Vielen Dank !!!!

Antwort

48

Das erste Element in Ihrem Selektor wird nur verwendet, wenn die Taste gedrückt UND ausgewählt wird. Wenn Sie button_sel verwenden möchten, wenn Sie Ihre Taste gedrückt oder ausgewählt, sollten Sie etwas tun:

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

Die Elemente von oben nach unten ausgewertet werden, die letzte ist die Standardeinstellung. Obwohl ich nicht sicher bin, ob state_selected für Schaltflächen sinnvoll ist.

+2

Danke. Es war das !! – croigsalvador

5

Kann Shape-Inline-Element verwenden.

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

Für Probe:

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