Як застосувати стиль до всіх кнопок програми Android


131

У моєму додатку застосований стиль:

AndroidManifest.xml:

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

І в моїх стилях.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стосується всіх кнопок.


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 основної теми. Велике спасибі!
Фенікс Вольтрес

хтось ні, як це зробити для спінера?
Mike6679

31
Лише одна примітка: якщо стиль CKButton не успадкує @android: style / Widget.Button, кнопка перестане працювати.
Джеймс

9
в чому різниця між parent="android:Widget.Button"і parent=@android:style/Widget.Button?
Помилки трапляються

Чому редактор макетів не попередньо переглядає зміни відповідно до стилю кнопок, встановлених у темі
Killer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.