8
votes

Supprimer le rembourrage des boutons d'image (Android)

J'ai des boutons qui ressemblent à l'image supérieure de l'orientation du paysage:

capture d'écran p>

Je veux qu'il ressemble à l'image du bas. p>

Voici mon code .xml pour ces boutons. P>

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


1 commentaires

6 Réponses :


0
votes

Utilisez un rembourrage négatif sur le imagebutton code> dans votre XML pour réduire le rembourrage utilisé.

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


3 commentaires

Peu importe la hauteur des chiffres, je reçois toujours le même rembourrage étrange.


Cela pourrait être une marge au lieu de rembourrage ... Le même tour s'applique, utilisez des nombres négatifs.


J'ai juste essayé la marge avec le même résultat ... J'ai essayé les deux pour l'enfer aussi. Il y a toujours tout l'espace invisible.



8
votes

Vous ne pouvez pas faire cela avec les boutons par défaut, les boutons 9 patchs ont un rembourrage en eux (les deux, Holo et les boutons Pre Holo). Vous pouvez voir que Ici .

Si vous voulez des boutons sans rembourrage, vous devrez modifier les 9 correctifs et créer votre propre thème: xxx

et votre imageButtonStyle : xxx


0 commentaires

0
votes

// retirez le Android: Weightsum Code> Utilisez la largeur comme Match_Parent CODE>

// DONNER Android: Layout_weight = "1" code> pour tous ImageButton P>

// Utiliser Android: Scaletype = "FITXY" CODE> Pour tous P>

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


3 commentaires

Cela fonctionne, mais il étend les images, ce que je ne veux pas.


Ensuite, supprimez l'Android: Scaletype = "FITXY".


Quand je l'ai fait, j'ai atteint le même résultat qu'avant (avec l'espace de rembourrage)



1
votes

J'ai fini par résoudre ceci en commutant mon étable à une linearlayout. Voici mon code à moins que quiconque ne touche ce problème:

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


1 commentaires

Le problème avec la définition de l'arrière-plan de NULL est que vous perdez la teinte grise qui est livrée avec un ImageButton en cas de clic.



1
votes

Une alternative plus facile à créer votre propre image de correctif pour retirer la marge consiste à définir l'arrière-plan sur NULL.

Par exemple, ajoutez les éléments suivants à res / styles.xml: xxx < / Pré>

Vous devez maintenant constater que toutes les images de l'image ont une marge nulle, que ce soit défini dans XML ou créé de manière programmative.


0 commentaires

0
votes

Utilisez la propriété Scaletype , vous pouvez voir l'icône de même taille de imagebutton


0 commentaires