J'utilise le thème AppCompat et je veux définir l'attribut minHeight sur mes boutons:
<style name="Theme.MyTheme" parent="Theme.AppCompat">
<item name="Android:buttonStyle">@style/MyButtonStyle</item>
</style>
<style name="MyButtonStyle" parent="...?">
<item name="Android:minHeight">60dp</item>
</style>
Cependant, il n'y a pas de style Widget.AppCompat.Button
à définir comme parent pour MyButtonStyle
. Si j'utilise Android:Widget.Button
, alors tous mes boutons ressemblent au vieux style de merde. J'ai essayé divers autres thèmes AppCompat comme TextAppearance.AppCompat.Button
, mais ils ne fonctionnent pas.
Si vous omettez un thème parent pour le style du bouton, le style du bouton ne sera pas correct.
Comment puis-je personnaliser la valeur par défaut Theme.AppCompat
buttonStyle
?
Vous pouvez avoir Base.MyButtonStyle
extend Android:Widget.Holo.Button
sur l'API 14+ (dans res/values-v14/styles.xml
) et Android:Widget.Material.Button
sur l'API 21+ (dans res/values-v21/styles.xml
. Ce style changera en fonction de la version du système de votre appareil. Mettez les modifications spécifiques à votre plate-forme ici.
Ensuite, ayez MyButtonStyle
extend Base.MyButtonStyle
et définissez le Android:minHeight
ici (dans res/values/styles.xml
). Cela s'appliquera à toutes les plateformes.
Vos boutons peuvent alors utiliser le style MyButtonStyle
.
Cet exemple suppose que votre SDK minimum est de 14.
Et oui, il n'y a pas de style de bouton appcompat-v7 (enfin, du moins pas encore).
MODIFIER
Cela suppose que vous êtes d'accord avec le bouton Holo sur les plates-formes plus anciennes que Lollipop. Cela semble discret et si vous pouvez vous passer d'ondulations, ça devrait aller. Si vous voulez des ondulations, je vous suggère de rechercher une bibliothèque de boutons Lollipop tierce.
Pour répondre à ma propre question, il apparaît AppCompat ne prend actuellement pas en charge le widget Button
:
AppCompat fournit un comportement similaire sur les versions antérieures d'Android Pour un sous-ensemble de widgets d'interface utilisateur:
- Tout ce qui est fourni par la barre d’outils AppCompat (modes d’action, etc.)
- Éditer le texte
- Fileur
- CheckBox
- Bouton radio
- Changer (utilisez le nouveau Android.support.v7.widget.SwitchCompat)
- CheckedTextView
La seule solution que je vois serait de recréer le style du bouton Matériau à partir du code source Android, une tâche qui dépasse le cadre de mes souhaits.
Style de bouton personnalisé avec AppCompat +22 Dans vos styles.xml
<style name="Button.Tinted" parent="Widget.AppCompat.Button">
<item name="colorButtonNormal">YOUR_TINT_COLOR</item>
<item name="colorControlHighlight">@color/colorAccent</item>
<item name="Android:textColor">@Android:color/white</item> </style>
dans votre layout.xml
<Button
Android:id="@+id/but_next"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:text="@string/but_continue"
Android:theme="@style/Button.Tinted" />
Supprimer le Android:
<style name="Theme.MyTheme" parent="Theme.AppCompat">
<item name="buttonStyle">@style/MyButtonStyle</item>
</style>