J'utilise les nouveaux composants matériels com.google.Android.material:material
avec Android x mais je ne peux pas définir d'arrière-plan personnalisé pour le bouton.
Je sais que je peux utiliser app:backgroundTint
pour changer la couleur
mais l'arrière-plan par défaut a un rembourrage dont je veux me débarrasser, et l'ancienne façon d'utiliser Android:background
pour définir mon propre arrière-plan mais cela ne fonctionne plus.
J'ai regardé le docs mais je ne trouve aucune mention à ce changement.
La documentation de la classe MaterialButton
dit:
N'utilisez pas le
Android:background
attribut.MaterialButton
gère son propre arrière-plan dessinable, et la définition d'un nouveau fond signifie queMaterialButton
ne peut plus garantir que les nouveaux attributs qu'il introduit fonctionneront correctement. Si l'arrière-plan par défaut est modifié,MaterialButton
ne peut garantir un comportement bien défini.
Cependant, le readme de GitHub dit:
Remarque:
MaterialButton
est visuellement différent deButton
etAppCompatButton
. L'une des principales différences est queAppCompatButton
a un4dp
encart à gauche et à droite, contrairement àMaterialButton
.
Cela ne mentionne que l'encart gauche/droite, mais la section Attributs du fichier Lisez-moi montre que les quatre encarts sont pris en charge:
Vous pouvez donc ajouter ces attributs à votre <MaterialButton>
tag:
Android:insetTop="0dp"
Android:insetBottom="0dp"
Avec la nouvelle version 1.1.0 ('com.google.Android.material: material: 1.1.0') si vous souhaitez remplacer certains attributs de thème à partir d'un style par défaut, vous pouvez utiliser new materialThemeOverlay
attribut.
Dans votre cas, vous pouvez faire quelque chose comme:
<style name="MtButtonStyle"
parent="Widget.MaterialComponents.Button">
<item name=“materialThemeOverlay”>@style/GreenButtonThemeOverlay</item>
</style>
<style name="GreenButtonThemeOverlay">
<item name="colorPrimary">@color/green</item>
</style>