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?
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>
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.
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.
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>
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.
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"
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é.
Dans le jeu XML du bouton Android:includeFontPadding="false"
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"
... />
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
Donnez à votre bouton un arrière-plan personnalisé: @ drawable/material_btn_blue
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"
.