J'ai des boutons qui ressemblent à l'image supérieure de l'orientation du paysage:
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>
6 Réponses :
Utilisez un rembourrage négatif sur le imagebutton code> dans votre XML pour réduire le rembourrage utilisé.
android:paddingLeft="-5dip"
android:paddingRight="-5dip"
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.
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: p> et votre imageButtonStyle : p>
// retirez le // DONNER // Utiliser Android: Weightsum Code> Utilisez la largeur comme
Match_Parent CODE>
Android: Layout_weight = "1" code> pour tous ImageButton P>
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>
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)
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>
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.
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: p> 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. P> P>
Utilisez la propriété Scaletype CODE>, vous pouvez voir l'icône de même taille de
imagebutton code> p>
Vérifiez cet ansewr Stackoverflow.com/a/67302375/4797289