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.


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>

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.