2016-04-19 8 views
0

zu entsprechen Ich lerne Android-Benutzeroberflächen zu entwickeln. Ich möchte ein ImageButton mit einer Reihe von Zeichenelementen erstellen, um unterschiedliche Schaltflächenzustände anzuzeigen. Ich habe für jede Taste zwei Bilder erstellt: 133 dpi für den Normalzustand und eine skalierte Kopie (126 dpi), um den Push-Button-Effekt zu erzeugen.Zentrieren ImageButton src, nicht dehnen, um die Größe der Schaltfläche

enter image description here

Ich malte das zweite Bild, das Bildauswahlmechanismus funktioniert zumindest anzuzeigen.

Hier ist der Ausgangszustand meiner Anwendung

enter image description here

Wenn ich den Knopf drücken es nur seine Farbe ändert, aber nicht die Größe, wie erwartet. Beide Bilder werden auf die gleiche Größe

ausgestattet enter image description here

Aktivität Layout xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainUserActions" 
    android:background="@android:color/transparent"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:weightSum="3" 
     android:layout_alignParentTop="true"> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:weightSum="2" 
      android:gravity="top"> 

      <ImageButton 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:id="@+id/imageButton" 
       android:clickable="true" 
       android:layout_weight="1" 
       android:src="@drawable/broom_stick_image_selection" 
       android:background="@null" 
       android:layout_gravity="center" 
       android:scaleType="center" /> 

      <ImageButton 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:id="@+id/imageButton2" 
       android:layout_gravity="center" 
       android:clickable="true" 
       android:layout_weight="1" 
       android:background="@null" 
       android:src="@drawable/vacuum_selection" 
       android:scaleType="center" /> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center_horizontal" 
      android:layout_weight="1"></LinearLayout> 

     <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center_horizontal" 
      android:layout_weight="1"></LinearLayout> 
    </LinearLayout> 
</RelativeLayout> 

ziehbar Auswahl xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:drawable="@drawable/broom_stick_white_pressed_rose" /> <!-- pressed --> 
    <item android:state_focused="true" 
      android:drawable="@drawable/broom_stick_white" /> <!-- focused --> 
    <item android:drawable="@drawable/broom_stick_white" /> <!-- default --> 
</selector> 

, wie das System sagen, Zentrieren nur die src Bilder auf das Tastenlayout, um sie nicht auf die gleiche Größe anzupassen?

+0

Versuchen Sie, die Breite und Höhe der ImageButtons auf 'wrap_content' zu setzen. – NoChinDeluxe

Antwort

1

Eine Möglichkeit, dies zu erreichen, besteht darin, den Artikel in eine layer-list zu verpacken, die die Definition von Offsets ermöglicht.

<?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 
       android:drawable="@drawable/broom_stick_white_pressed_rose" 
       android:top="2dp" 
       android:right="2dp" 
       android:bottom="2dp" 
       android:left="2dp" /> 
     </layer-list> 
    </item> 
    <item android:drawable="@drawable/broom_stick_white" /> 
</selector> 
+0

Ich sehe jetzt, dass keine Notwendigkeit für zusätzliche Bilder - das Originalbild ist genug! –