108 votes

Comment réduire le rembourrage interne autour du texte dans un objet bouton Android ?

Example buttons

Pour l'instant, j'ai un bouton qui ressemble à la première image ci-dessus. Comment puis-je réduire le remplissage autour du texte à l'intérieur du bouton lui-même (pour qu'il ressemble davantage à la deuxième image) ?

La largeur et la hauteur de la mise en page sont définies comme suit :

android:layout_width="match_parent"
android:layout_height="wrap_content"

La forme du style personnalisé a des paramètres"

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">

Le reste n'étant que des attributs de couleur et des valeurs de rayon.

Pour que ce soit clair, je veux que le cadre du bouton serre davantage le texte "Connexion".

Toute aide et tout commentaire sont les bienvenus. Merci.

255voto

Steven Points 506

J'ai mis du temps à le découvrir, mais le "remplissage" autour du texte d'un bouton n'en est pas vraiment un. Le style par défaut de Widget.Button comprend une propriété minHeight. En modifiant la propriété minHeight du bouton, vous pourrez ajuster le remplissage comme prévu.

<Button
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/test"
        android:textColor="@color/black"
        android:minHeight="40dip"/>

<style name="Widget.Holo.Button" parent="Widget.Button">
    <item name="android:background">@android:drawable/btn_default_holo_dark</item>
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
    <item name="android:textColor">@android:color/primary_text_holo_dark</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:minWidth">64dip</item>
</style>

17voto

Gabriele Mariotti Points 7243

Dans la bibliothèque des composants matériels, l'élément MaterialButton a un style par défaut avec insetBottom y insetTop avec une valeur de 6dp .

Vous pouvez les modifier dans la mise en page :

  <com.google.android.material.button.MaterialButton
      android:insetTop="0dp"
      android:insetBottom="0dp"
      ../>

ou dans un style :

 <style name="Button_no_insets" parent="Widget.MaterialComponents.Button"..>
    <item name="android:insetTop">0dp</item>
    <item name="android:insetBottom">0dp</item>
 </style>

enter image description hereenter image description here

5voto

Qadir Hussain Points 1766

Essayez ceci dans votre fichier shape.xml personnalisé

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="1dp"
android:padding="1dp">

Vous pouvez également modifier le xml de votre bouton.

android:layout_width="wrap_content"
android:layout_height="wrap_content"

2voto

Neoh Points 4186

Si vous voulez un rembourrage supérieur et inférieur plus petit, utilisez ceci :

 android:paddingTop="2dp"
 android:paddingBottom="2dp"

1voto

mrr7997 Points 11

Pour moi, il faut régler tout ce qui suit

minWidth 
minHeight
paddingHorizontal
paddingVertical
layout wrap_content

  android:paddingVertical="0dp"
  android:paddingHorizontal="0dp"
  android:minHeight="0dp"
  android:minWidth="0dp"
  android:layout_width="wrap_content"

ceci supprimera tous les espaces entre le texte et la bordure du bouton et la bordure (si elle est utilisée) sera autour du texte sans aucun espace.

Ce devrait être la réponse choisie.

Terminé

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X