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.