2016-06-30 8 views
1

Ich versuche, eine Statusliste als Hintergrund für eine Bildschaltfläche zu erstellen.Android: Ich kann eine StateList nicht zum Arbeiten zeichnen

Ich verwende diese PNG-Dateien enter image description here enter image description here

und mein Zustand Liste Selektor ist wie folgt:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/play_button_pressed" android:state_pressed="true" /> 
    <item android:drawable="@drawable/play_button_pressed" android:state_focused="true" /> 
    <item android:drawable="@drawable/play_button_normal" /> 
</selector> 

und die Grafik-Taste ist wie folgt:

<ImageButton 
      android:id="@+id/play_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:background="@drawable/play_button_bg" 
      /> 

aber Die Schaltfläche wird angezeigt, da sie das große Bild und den Hintergrund enthält. Wenn Sie darauf klicken, geschieht nichts. Was kann hier falsch sein?

Antwort

0

Ok, habe ich es geschafft, es zu lösen eine Zustandsliste Selektor mit Schicht-Listen mit wie folgt aus:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
     <layer-list> 
      <item> 
       <bitmap android:src="@drawable/play_button_pressed" android:gravity="center" /> 
      </item> 
     </layer-list> 
    </item> 
    <item android:state_focused="true"> 
     <layer-list> 
      <item> 
       <bitmap android:src="@drawable/play_button_pressed" android:gravity="center" /> 
      </item> 
     </layer-list> 
    </item> 
    <item android:drawable="@drawable/play_button_normal" /> 
</selector> 

Der Trick ist, in der Bitmap: android: Schwerkraft = "center"

0

Es gibt kein Problem mit Code. Da beide Bilder identisch sind, sieht es nach dem Klick auf den Bild-Button nicht aus. Ändern Sie ein Bild in ein anderes PNG, sagen Sie eine Pause Schaltfläche Bild & versuchen. Verwenden Sie ImageView anstelle von ImageButton.

1

Änderung es zu:

<ImageButton 
     android:id="@+id/play_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:scaleType="center" 
     android:src="@drawable/play_button_bg" 
     android:background="@null"/> 

Hintergründe standardmäßig strecken die Ansicht passen. So werden die beiden Buttons verändert, indem das finale Aussehen genau gleich ist.

Die Verwendung als Quelle und die Skalierung als "Center ohne Skalierung" sollte die Änderung der beiden Schaltflächen anzeigen (obwohl der endgültige Effekt möglicherweise nicht exakt ist, was Sie erwarten).

Als allgemeine Regel gilt, dass der Zustand "Zeichensatz" weniger Kopfschmerzen verursacht, wenn alle Zeichen gleich groß sind.