2012-12-31 16 views
6

mi hanno pulsanti che sembrano l'immagine in alto per l'orientamento orizzontale:Rimozione Image Button Imbottitura (Android)

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

voglio farlo sembrare come l'immagine in basso.

Ecco il mio codice .xml per questi pulsanti.

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

risposta

2

ho finito per fissare questo passando il mio TableLayout ad un LinearLayout. Ecco il mio codice a meno che qualcun altro si imbatte in questo problema:

<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

il problema con l'impostazione di sfondo su null è che si perde la tinta grigia che viene fornito con un ImageButton al clic. – sudocoder

0

Usa imbottitura negativo sul ImageButton nel vostro XML a ridursi l'imbottitura utilizzato.

android:paddingLeft="-5dip" 
android:paddingRight="-5dip" 

Nota quanto sopra è solo un esempio ... avrete bisogno di pasticciare con i numeri per regolare per il vostro caso specifico di rendere le cose corrette.

+0

Non importa quanto in alto siano i numeri, ho ancora lo stesso strano riempimento. –

+0

Potrebbe essere margine invece di riempimento ... lo stesso trucco si applica, utilizzare numeri negativi. – Barak

+0

Ho appena provato margine con lo stesso risultato ... Ho provato sia per l'inferno che per quello. C'è ancora tutto lo spazio invisibile. –

6

Non è possibile farlo con i pulsanti predefiniti, i pulsanti 9 hanno un riempimento interno (entrambi, i pulsanti holo e pre-holo). Puoi vedere che here.

Se volete tasti senza imbottitura, allora dovrete modificare le 9 patch e creare il proprio tema:

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

e la tua imageButtonStyle:

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

// rimuovere il android:weightSum uso larghezza come match_parent

// dare android:layout_weight="1" per tutti imageButton

// utilizzare android:scaleType="fitXY" per tutti

<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

Funziona, ma allunga le immagini, che è ciò che non voglio. –

+0

Quindi rimuovere android: scaleType = "fitXY". –

+0

Quando ho fatto questo, ho ottenuto lo stesso risultato di prima (con la cosa dello spazio di riempimento) –

0

Un più facile alternativa per creare la propria immagine 9 patch per rimuovere il margine è quello di impostare lo sfondo su null.

Ad esempio, aggiungere il seguente alla 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> 

Ora si dovrebbe trovare che tutti hanno ImageButtons margine pari a zero, a prescindere dal fatto definito in XML o creati programatically.