Como aplico um estilo a todos os botões de um aplicativo Android

131

Eu tenho um estilo aplicado a todo o meu aplicativo:

AndroidManifest.xml:

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

E no meu 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>

Mas o estilo não é aplicado.

Sinto muito se apenas usei o nome falso no ApplicationStyle- Item, mas não tenho idéia de onde procurar os nomes dos objetos e simplesmente assumi que isso android:buttonse aplica a todos os botões.

whlk
fonte
1
Por favor, dê uma olhada na minha resposta em stackoverflow.com/a/26625931/1065835
Maksim Dmitriev

Respostas:

206

Para estilos do Android, você faz referência aos atributos predefinidos nos quais o Android apresentou R.attr. Nesse caso, parece que você deseja fazer referência android:buttonStyle. Eu acho que isso iria funcionar:

<style name="ApplicationStyle" parent="android:Theme">
  <item name="android:buttonStyle">@style/CKButton</item>
</style>
Dan Lew
fonte
1
Deus, eu estava procurando essa funcionalidade há séculos. Não tenho idéia por que o textColor dos botões não segue a propriedade textColor do tema principal. Muito obrigado!
Fenix ​​Voltres
alguém não como fazer isso para spinner?
precisa saber é o seguinte
31
Apenas uma observação: se o estilo CKButton não herdar @android: style / Widget.Button, o botão deixará de funcionar.
James
9
qual é a diferença entre parent="android:Widget.Button"e parent=@android:style/Widget.Button?
Erros acontecem
Por editor de layout fazer mudanças não visualização de acordo com o conjunto de estilo de botão no tema
Assassino