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 zone du bas, il y a du rembourrage.
Comment puis-je m'en débarrasser et laisser le bouton remplir complètement la zone inférieure?
Réponses:
Pour moi, le problème s'est avéré être minHeight et minWidth sur certains des thèmes Android.
Sur l'élément Button, ajoutez:
Ou dans le style de votre bouton:
la source
Button
prenait encore autant de place même après l'avoir régléandroid:background="@null"
. Le fait que leButton
style par défaut soit responsable est un très bon conseil.Ma solution a été définie sur 0 pour les propriétés insetTop et insetBottom.
la source
Ce n'est pas du remplissage, c'est l'ombre autour du bouton dans son arrière-plan dessinable. Créez votre propre arrière-plan et il disparaîtra.
la source
Une solution de contournement peut être d'essayer d'utiliser des
-ve
valeurs pour les marges comme suit:Cela fera disparaître cet espace. Je veux dire que vous pouvez choisir la
dip
valeur appropriée , ce qui la fait disparaître. Cela a fonctionné pour moi. J'espère que ça marche pour toi.la source
Pour supprimer le remplissage autour du bouton bascule, nous devons définir minWidth et minHeight 0dp.
android:minWidth="0dp" android:minHeight="0dp"
définissez votre fichier dessinable sur l'attribut de bouton comme:
android:button="@drawable/toggle_selector"
Ci-dessous mon
toggle_selecter.xml
dossierla source
Je suis nouveau sur Android mais j'ai eu une situation similaire. J'ai fait ce que @Delyan a suggéré et j'ai également utilisé android: background = "@ null" dans le fichier de mise en page xml.
la source
Dans l'ensemble XML du bouton
android:includeFontPadding="false"
la source
J'ai eu le même problème et il semble que ce soit à cause de la couleur de fond du bouton. Essayez de changer la couleur d'arrière-plan en une autre couleur, par exemple:
et voyez si cela fonctionne. Vous pouvez ensuite définir un style si vous souhaitez que le bouton soit utilisé.
la source
Pour retirer le rembourrage haut et bas
Pour supprimer le rembourrage gauche et droit
la source
Ce n'est pas un remplissage mais ou l'ombre de l'arrière-plan dessinable ou un problème avec le
minHeight
etminWidth
.Si vous voulez toujours le bon effet d'entraînement, vous pouvez créer votre propre style de bouton en utilisant
?attr/selectableItemBackground
:Et appliquez-le au bouton:
la source
Il ne semble pas s'agir de remplissage, de marge ou de hauteur / largeur min. La définition
android:background="@null"
du bouton perd son animation tactile, mais il s'avère que la définition de l'arrière-plan sur n'importe quoi corrige cette bordure.Je travaille actuellement avec:
la source
Donnez à votre bouton un arrière-plan personnalisé: @ drawable / material_btn_blue
la source
Vous pouvez également le faire avec
layout_width(height)
paramètres.Par exemple, j'ai supprimé l'espace supérieur et inférieur avec le
android:layout_height="18dp"
code.la source
Un bouton standard n'est pas censé être utilisé en pleine largeur, c'est pourquoi vous en faites l'expérience.
Contexte
Si vous regardez le Material Design - Button Style, vous verrez qu'un bouton a une zone de clic de 48dp de hauteur, mais sera affiché comme 36dp de hauteur pour ... une raison quelconque.
Il s'agit du contour d'arrière-plan que vous voyez, qui ne couvrira pas toute la zone du bouton lui-même.
Il a des coins arrondis et un peu de rembourrage et est censé être cliquable par lui-même, envelopper son contenu et ne pas couvrir toute la largeur en bas de votre écran.
Solution
Comme mentionné ci-dessus, ce que vous voulez, c'est un arrière-plan différent . Pas un bouton standard, mais un arrière-plan pour un élément sélectionnable avec ce bel effet d'entraînement.
Pour ce cas d'utilisation, il existe l'
?selectableItemBackground
attribut de thème que vous pouvez utiliser pour vos arrière-plans (en particulier dans les listes).Il ajoutera une ondulation standard de la plate-forme (ou une liste d'états de couleurs sur <21) et utilisera les couleurs de votre thème actuel.
Pour votre cas d'utilisation, vous pouvez simplement utiliser les éléments suivants:
Il n'est pas non plus nécessaire d'ajouter des pondérations de mise en page si votre vue est la seule et couvre tout l'écran
Si vous avez une idée différente de ce à quoi votre arrière-plan devrait ressembler, vous devez créer vous-même un dessin personnalisé et gérer la couleur et l'état.
la source
Après des heures à creuser autour de plusieurs réponses, j'ai finalement trouvé une solution qui n'utilise pas un élément différent, ne manipule pas
minHeight
ouminWidth
, ou même ne s'enroule pasButton
autour d'unRelativeLayout
.La principale chose à retenir ici est le réglage du premier plan au lieu de l'arrière-plan, comme le stipulent de nombreuses réponses. Changer l'arrière-plan lui-même en
selectableItemBackground
-même écrasera simplement toutes les modifications que vous avez apportées à la couleur / l'arrière-plan du bouton, le cas échéant.Changer le premier plan vous donne le meilleur des deux mondes: débarrassez-vous du rembourrage «invisible» et conservez le design de votre bouton.
la source
Vous pouvez utiliser le style Borderless dans AppCompatButton comme ci-dessous. et utilisez android: background avec lui.
Code du bouton
Production:
la source