Come applico uno stile a tutti i pulsanti di un'applicazione Android


131

Ho uno stile applicato a tutta la mia applicazione:

AndroidManifest.xml:

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

E nel mio 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>

Ma lo stile non viene applicato.

Mi dispiace se ho appena usato il nome falso in ApplicationStyle- Item, ma non ho idea di dove cercare i nomi degli oggetti e semplicemente supposto, che si android:buttonapplica a tutti i pulsanti.


1
Dai un'occhiata alla mia risposta su stackoverflow.com/a/26625931/1065835
— Maksim Dmitriev,

Risposte:


206

Per gli stili Android, fai riferimento agli attributi preimpostati che Android ha disposto R.attr. In questo caso, sembra che tu voglia fare riferimento android:buttonStyle. Penso che funzionerebbe:

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

1
Dio, stavo cercando tale funzionalità da secoli. Non ho idea del perché i pulsanti textColor non seguano la proprietà textColor del tema principale. Grazie mille!
— Fenix ​​Voltres,

nessuno no come fare questo per spinner?
— Mike6679,

31
Solo una nota: se lo stile CKButton non eredita @android: style / Widget.Button, il pulsante smetterà di funzionare.
— James,

9
che differenza c'è tra parent="android:Widget.Button"e parent=@android:style/Widget.Button?
— bug sono accaduti il

Perché l'editor di layout non visualizza in anteprima le modifiche in base allo stile del pulsante impostato nel tema
— Killer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.