¿Cómo aplico un estilo a todos los botones de una aplicación de Android?

131

Tengo un estilo aplicado a toda mi aplicación:

AndroidManifest.xml:

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

Y en mi 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>

Pero el estilo no se aplica.

Lo siento si solo usé el nombre falso en ApplicationStyle- Item, pero no tengo idea de dónde buscar los nombres de los objetos y simplemente asumí que eso se android:buttonaplica a todos los botones.

whlk
fuente
1
Por favor, eche un vistazo a mi respuesta en stackoverflow.com/a/26625931/1065835
Maksim Dmitriev

Respuestas:

206

Para los estilos de Android, hace referencia a los atributos preestablecidos que Android ha establecido R.attr. En este caso, parece que desea hacer referencia android:buttonStyle. Creo que esto funcionaría:

<style name="ApplicationStyle" parent="android:Theme">
  <item name="android:buttonStyle">@style/CKButton</item>
</style>
Dan Lew
fuente
1
Dios, estaba buscando esa funcionalidad por años. No tengo idea de por qué los botones textColor no siguen la propiedad textColor del tema principal. ¡Muchas gracias!
Fenix ​​Voltres
Alguien no cómo hacer esto para spinner?
Mike6679
31
Solo una nota: si el estilo CKButton no hereda @android: style / Widget.Button, el botón dejará de funcionar.
James
9
¿Cuál es la diferencia entre parent="android:Widget.Button"y parent=@android:style/Widget.Button?
errores suceden el
¿Por editor de diseño de hacer cambios no vista previa de acuerdo con el sistema del estilo del botón en el tema
Killer