Comment appliquer un style à tous les boutons d'une application Android


131

J'ai un style appliqué à l'ensemble de mon application:

AndroidManifest.xml:

<application android:theme="@style/ApplicationStyle" android:icon="@drawable/icon" android:label="@string/app_name">

Et dans mon styles.xml:

 <style name="ApplicationStyle" parent="android:Theme">
  <item name="android:button">@style/CKButton</item>
 </style>
 <style name="CKButton" parent="android:style/Widget.Button">
  <item name="android:textSize">19sp</item>
  <item name="android:layout_margin">0dip</item>
  <item name="android:background">#ff0000</item>
 </style>

Mais le style n'est pas appliqué.

Je suis désolé si je viens d'utiliser le faux nom dans le ApplicationStyle- Item, mais je n'ai aucune idée de l'endroit où chercher les noms des objets et je suppose simplement que cela android:buttons'applique à tous les boutons.


1
Veuillez jeter un œil à ma réponse sur stackoverflow.com/a/26625931/1065835
— Maksim Dmitriev

Réponses:


206

Pour les styles Android, vous faites référence aux attributs prédéfinis dans lesquels Android a été mis en page R.attr. Dans ce cas, il semble que vous souhaitiez référencerandroid:buttonStyle . Je pense que cela fonctionnerait:

<style name="ApplicationStyle" parent="android:Theme">
  <item name="android:buttonStyle">@style/CKButton</item>
</style>

1
Dieu, je cherchais une telle fonctionnalité depuis des lustres. Je n'ai aucune idée de la raison pour laquelle textColor des boutons ne suit pas la propriété textColor du thème principal. Merci beaucoup!
— Fenix ​​Voltres

personne ne comment faire cela pour spinner?
— Mike6679

31
Juste une remarque: si le style CKButton n'hérite pas de @android: style / Widget.Button, le bouton cessera de fonctionner.
— James

9
quelle est la difference entre parent="android:Widget.Button"et parent=@android:style/Widget.Button?
— Bugs Happen

Pourquoi l'éditeur de mise en page ne prévisualise pas les modifications selon le style de bouton défini dans le thème
— Killer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.