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.