Как применить стиль ко всем кнопкам приложения Android

131

У меня есть стиль, примененный ко всему моему приложению:

AndroidManifest.xml:

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

И в моем файле 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>

Но стиль не применяется.

Прошу прощения, если я просто использовал ложное имя в ApplicationStyle- Item, но я понятия не имею, где искать имена объектов, и просто предположил, что это android:buttonприменимо ко всем кнопкам.

whlk
источник
1
Пожалуйста, взгляните на мой ответ на stackoverflow.com/a/26625931/1065835
Максим Дмитриев

Ответы:

206

Для стилей Android вы ссылаетесь на предустановленные атрибуты, которые использует Android R.attr. В этом случае, похоже, вы хотите сослаться android:buttonStyle. Думаю, это сработает:

<style name="ApplicationStyle" parent="android:Theme">
  <item name="android:buttonStyle">@style/CKButton</item>
</style>
Дэн Лью
источник
1
Боже, как давно искал такой функционал. Понятия не имею, почему textColor кнопок не соответствует свойству textColor основной темы. Большое спасибо!
Fenix ​​Voltres,
никто нет, как это сделать для спиннера?
Mike6679
31
Одно замечание: если стиль CKButton не наследует @android: style / Widget.Button, кнопка перестанет работать.
Джеймс
9
в чем разница между parent="android:Widget.Button"и parent=@android:style/Widget.Button?
Bugs Happen
Почему редактор макета не выполняет предварительный просмотр изменений в соответствии со стилем кнопок, заданным в теме
Killer