web-dev-qa-db-fra.com

Comment supprimer le rembourrage autour des boutons dans Android?

Dans mon application Android, j'ai cette disposition:

<?xml version="1.0" encoding="utf-8" ?> 
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android" 
      Android:layout_width="match_parent" 
      Android:layout_height="match_parent" 
      Android:orientation="vertical">

    <fragment
         Android:id="@+id/map"
         Android:layout_width="match_parent"
         Android:layout_height="0dp" 
         Android:layout_weight="1" 
         class="com.google.Android.gms.maps.SupportMapFragment"/>

    <Button
        Android:id="@+id/button_back"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:onClick="CloseActivity"
        Android:padding="0dp"
        Android:text="@+string/back" />

</LinearLayout>

Dans l'aperçu et sur le téléphone, cela ressemble à:

Comme vous pouvez le voir sur le bouton dans la partie inférieure, il y a du rembourrage.

Comment puis-je m'en débarrasser et laisser le bouton remplir complètement la zone inférieure?

140
omega

Pour moi, le problème s’est révélé minHeight et minWidth sur certains des thèmes Android.

Sur l'élément Button, ajoutez:

<Button Android:minHeight="0dp" Android:minWidth="0dp" ...

Ou dans le style de votre bouton:

<item name="Android:minHeight">0dp</item>
<item name="Android:minWidth">0dp</item>
367
D. A. Terre

Ce n'est pas un rembourrage, c'est l'ombre autour du bouton dans son fond qui peut être dessiné. Créez votre propre fond et il disparaîtra.

42
Delyan

Une solution de contournement consiste à essayer d'utiliser les valeurs -ve pour les marges, comme suit:

<Button
    Android:id="@+id/button_back"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:onClick="CloseActivity"
    Android:padding="0dp"
    Android:layout_marginLeft="-5dip"
    Android:layout_marginRight="-5dip"
    Android:layout_marginTop="-5dip"
    Android:layout_marginBottom="-5dip"
    Android:text="@string/back" />

Cela fera disparaître cet espace. Je veux dire que vous pouvez choisir la valeur dip appropriée, ce qui la fait disparaître. Cela a fonctionné pour moi. J'espère que ça marche pour toi.

22
Shobhit Puri

Pour supprimer le bouton de bascule autour du remplissage, nous devons définir minWidth et minHeight 0dp .Android:minWidth="0dp" Android:minHeight="0dp"

  <ToggleButton
        Android:id="@+id/toggle_row_notifications"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:minWidth="0dp"
        Android:minHeight="0dp"
        Android:layout_alignParentRight="true"
        Android:layout_centerVertical="true"
        Android:padding="@dimen/_5sdp"
        Android:textOn=""
        Android:textOff=""
        Android:background="@Android:color/transparent"
        Android:button="@drawable/toggle_selector"
        />

définissez votre fichier pouvant être dessiné sur l'attribut button, tel que: Android:button="@drawable/toggle_selector"

Ci-dessous, mon fichier toggle_selecter.xml

<?xml version="1.0" encoding="utf-8"?>
     <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
            <item Android:drawable="@drawable/notifications_toggle_on" 
                  Android:state_checked="true"/>
            <item Android:drawable="@drawable/notifications_toggle_off" 
                  Android:state_checked="false"/>
     </selector>
12
Yashoda Bane

Je suis nouveau sur Android mais j'ai eu une situation similaire. J'ai fait ce que @Delyan avait suggéré et utilisé avec Android: background = "@ null" dans le fichier de présentation XML.

8
Casey Murray

Vous devez utiliser les attributs minHeight et minWidth dans le bouton et vous assurer de l'utilisation de padding

    Android:minHeight="0dp"
    Android:minWidth="0dp"
7
viper

J'ai eu le même problème et il semble que c'est à cause de la couleur de fond du bouton. Essayez de changer la couleur de fond pour une autre couleur, par exemple:

Android:background="@color/colorActive"

et voir si ça marche. Vous pouvez ensuite définir un style si vous souhaitez que le bouton soit utilisé.

6
Panagiotis

Dans le jeu XML du bouton Android:includeFontPadding="false"

6
user1005462

Ce n'est pas un bourrage mais l'ombre de l'arrière-plan ou un problème avec les variables minHeight et minWidth.

Si vous voulez toujours l’effet d’ondulation de Nice, vous pouvez créer votre propre style de bouton à l’aide du ?attr/selectableItemBackground:

<style name="Widget.AppTheme.MyCustomButton" parent="Widget.AppCompat.Button.Borderless">
    <item name="Android:minHeight">0dp</item>
    <item name="Android:minWidth">0dp</item>
    <item name="Android:layout_height">48dp</item>
    <item name="Android:background">?attr/selectableItemBackground</item>
</style>

Et appliquez-le au bouton:

<Button 
    style="@style/Widget.AppTheme.MyCustomButton"
    ... />
4
Allan Veloso

Il ne semble pas y avoir de rembourrage, de marge ou de hauteur/largeur. Si vous définissez Android:background="@null", le bouton perd son animation tactile, mais il s'avère que définir l'arrière-plan sur quoi que ce soit corrige cette bordure.


Je travaille actuellement avec:

minSdkVersion 19
targetSdkVersion 23
2
juil

Donnez à votre bouton un arrière-plan personnalisé: @ drawable/material_btn_blue

0
Mike6679

Vous pouvez également le faire avec les paramètres layout_width(height).

Par exemple. J'ai supprimé les espaces supérieur et inférieur avec le code Android:layout_height="18dp".

0
EAMax