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.

whlk
la source
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>
Dan Lew
la source
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