¿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.


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>

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.