2012-12-31 7 views
6

Ich habe Tasten, die für die Landschaft Orientierung wie oben aussehen:Entfernen Bildschaltfläche Padding (Android)

screenshot http://i46.tinypic.com/33zb9dj.jpg

ich will es wie das Bild unten sehen.

Hier ist mein XML-Code für diese Schaltflächen.

<TableRow 
    android:id="@+id/tableRow7" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:weightSum="1.0" > 

    <ImageButton 
     android:id="@+id/appHome" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight=".5" 
     android:background="@null" 
     android:contentDescription="Home" 
     android:cropToPadding="true" 
     android:scaleType="fitEnd" 
     android:src="@drawable/home_bar" /> 

    <ImageButton 
     android:id="@+id/menuHome" 
     android:layout_weight="0" 
     android:background="@null" 
     android:contentDescription="Menu" 
     android:cropToPadding="true" 
     android:scaleType="center" 
     android:src="@drawable/menu_bar" /> 

    <ImageButton 
     android:id="@+id/back" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight=".5" 
     android:background="@null" 
     android:contentDescription="Back" 
     android:cropToPadding="true" 
     android:scaleType="fitStart" 
     android:src="@drawable/back_bar" /> 

</TableRow> 

Antwort

2

ich diese Fixierung am Ende von meinem Tablelayout auf ein Linearlayout wechseln. Hier ist mein Code, es sei denn sonst jemand über dieses Problem kommt:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:orientation="vertical"> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:gravity="center" > 

    <ImageButton 
     android:id="@+id/appHome" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@null" 
     android:contentDescription="Home" 
     android:scaleType="fitEnd" 
     android:src="@drawable/home_bar_grey" /> 

    <ImageButton 
     android:id="@+id/menuHome" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@null" 
     android:contentDescription="Menu" 
     android:onClick="menuhome" 
     android:scaleType="fitCenter" 
     android:src="@drawable/menu_bar" /> 

    <ImageButton 
     android:id="@+id/back" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@null" 
     android:contentDescription="Back" 
     android:scaleType="fitStart" 
     android:src="@drawable/exit_bar" /> 
</LinearLayout> 

+0

Das Problem mit dem Setzen von Hintergrund auf Null ist, dass Sie den grauen Farbton verlieren, der mit einem ImageButton beim Klicken kommt. – sudocoder

0

Verwenden negative Polsterung auf den ImageButton in Ihrem XML verwendet, um die Polsterung zu schrumpfen.

Beachten Sie, dass das obige nur ein Beispiel ist ... Sie müssen mit den Zahlen umgehen, um für Ihren speziellen Fall anzupassen, damit die Dinge richtig aussehen.

+0

Egal wie hoch die Zahlen sind, bekomme ich immer noch die gleiche komische Polsterung. –

+0

Es könnte sein, Marge statt Padding ... gleichen Trick gilt, verwenden Sie negative Zahlen. – Barak

+0

Ich habe gerade Rand mit dem gleichen Ergebnis versucht ... Ich versuchte beides für die Hölle davon. Da ist immer noch der ganze unsichtbare Raum. –

6

Mit den Standardtasten können Sie das nicht tun, die Tasten 9 Patches haben eine Füllung (sowohl Holo als auch die Pre-Holo-Tasten). Sie können das here sehen.

Wenn Sie Tasten ohne padding wollen, dann werden Sie die 9-Patches ändern müssen und Ihr eigenes Thema erstellen:

<style name="myTheme" parent="...."> 
    <item name="imageButtonStyle">@style/myImageButton</item> 
</style> 

und Ihre imageButtonStyle:

<style name="myImageButton" parent="Widget.ImageButton"> 
    <item name="android:background">@drawable/myCostomizedNinePatchSelectorWithoutPadding</item> 
</style> 
0

// die android:weightSum Verwendung entfernen Breite wie match_parent

// geben Sie android:layout_weight="1" für alle imageButton

// verwenden android:scaleType="fitXY" für alle

<TableRow 
    android:id="@+id/tableRow7" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    > 

    <ImageButton 
     android:id="@+id/appHome" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@null" 
     android:contentDescription="Home" 
     android:cropToPadding="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/home_bar" /> 

    <ImageButton 
     android:id="@+id/menuHome" 
     android:layout_weight="0" 
     android:background="@null" 
     android:contentDescription="Menu" 
     android:layout_weight="1" 
     android:cropToPadding="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/menu_bar" /> 

    <ImageButton 
     android:id="@+id/back" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:background="@null" 
     android:contentDescription="Back" 
     android:cropToPadding="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/back_bar" /> 

</TableRow> 
+0

Das funktioniert, aber es streckt die Bilder aus, was ich nicht will. –

+0

Dann entfernen Sie die Android: scaleType = "fitXY". –

+0

Wenn ich dies getan habe, erreichte ich das gleiche Ergebnis wie zuvor (mit dem Padding-Space-Ding) –

0

Eine einfachere Alternative zum eigenen 9-Patch-Bild zu schaffen, die Marge zu entfernen, ist der Hintergrund auf null gesetzt.

Fügen Sie zum Beispiel die folgenden res/styles.xml:

<style name="MarginlessImageButton" parent="android:Widget.ImageButton"> 
    <item name="android:background">@null</item> 
</style> 

<style name="AppTheme" parent="AppBaseTheme"> 
    <item name="android:imageButtonStyle">@style/MarginlessImageButton</item> 
</style> 

Sie jetzt, dass alle ImageButtons Null-Marge finden sollte, unabhängig davon, ob in XML definiert oder programmatisch erstellt.

Verwandte Themen