2017-04-20 2 views
0

Ich habe eine Schaltfläche mit Bildhintergrund. Immer wenn ich auf die Schaltfläche klicke, wird sie kleiner und bleibt klein. Ich habe überprüft, dass Hintergrundbilder die gleiche Größe haben.Warum Button Größe ändert sich nach dem Klicken

<android.support.v7.widget.AppCompatButton 
     android:id="@+id/back" 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:minWidth="20dp" 
     android:minHeight="20dp" 
     android:layout_above="@+id/joystick1" 
     android:layout_toEndOf="@+id/lb" 
     android:layout_toRightOf="@+id/lb" 
     android:background="@drawable/selector_btn_start_back" /> 

@ ziehbar/selector_btn_start_back:

<?xml version="1.0" encoding="utf-8"?> 

<item android:drawable="@drawable/controller_start_back_clicked" android:state_pressed="true"/> 
<item android:drawable="@drawable/controller_start_back" android:state_selected="false"/> 

Und diese Bilder sind 16 * 16 in hdpi.

Wie behalten Sie die gleiche Größe (XML-Layout) nach dem Klicken auf die Schaltfläche?

+0

Gibt es einen Grund, warum Sie den Knopf überhaupt benutzen? Es ist mir nicht klar, um welches Problem es sich handelt, aber die Verwendung von ImageView anstelle von Button kann das Problem beheben. –

+0

Ich bin nicht ganz sicher, warum Sie mehrere Bilder aufnehmen, aber wenn Sie die Bilder ändern, wenn Sie die Taste drücken, könnten Sie diesen Code posten –

Antwort

0

Überprüfen Sie drawable/selector_btn_start_back, um sicherzustellen, dass es zu diesem spec entspricht. Was Sie präsentieren, ist nicht vollständig.

Staat Liste

A StateListDrawable ist ein ziehbar Objekt in XML definiert, die ein mehr verschiedenen Bilder verwenden die gleiche Grafik darzustellen, je nach dem Zustand des Objekts. Zum Beispiel kann ein Button-Widget in einem von mehreren verschiedenen Zuständen existieren (gedrückt, fokussiert oder keine) und mithilfe einer ausklappbaren Statusliste können Sie für jeden Status ein anderes Hintergrundbild bereitstellen.

Sie können die Statusliste in einer XML-Datei beschreiben. Jede Grafik wird durch ein Element innerhalb eines einzelnen Elements dargestellt. Jeder verwendet verschiedene Attribute, um den Status zu beschreiben, in dem er als Grafik für das Zeichen verwendet werden soll.

Während jeder Statusänderung wird die Statusliste von oben nach unten durchlaufen und das erste Element verwendet, das dem aktuellen Status entspricht. Die Auswahl basiert nicht auf der "besten Übereinstimmung", sondern einfach auf dem ersten Element, das das Minimum erfüllt Kriterien des Staates.

Verwandte Themen