Як застосувати стиль до всіх кнопок програми 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.