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