Jak zastosować styl do wszystkich przycisków aplikacji na Androida

132

Mam styl zastosowany do całej mojej aplikacji:

AndroidManifest.xml:

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

A w moim 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>

Ale styl nie jest stosowany.

Przepraszam, jeśli właśnie użyłem fałszywej nazwy w ApplicationStyle- Item, ale nie mam pojęcia, gdzie szukać nazw obiektów i po prostu założyłem, że android:buttondotyczy to wszystkich przycisków.

whlk
źródło
1
Proszę spojrzeć na moją odpowiedź na stackoverflow.com/a/26625931/1065835
Maksim Dmitriev

Odpowiedzi:

208

W przypadku stylów systemu Android odwołujesz się do wstępnie ustawionych atrybutów, które zostały określone w systemie Android R.attr. W tym przypadku wygląda na to, że chcesz się odwołać android:buttonStyle. Myślę, że to zadziała:

<style name="ApplicationStyle" parent="android:Theme">
  <item name="android:buttonStyle">@style/CKButton</item>
</style>
Dan Lew
źródło
1
Boże, od wieków szukałem takiej funkcjonalności. Nie mam pojęcia, dlaczego textColor przycisków nie jest zgodny z właściwością textColor głównego motywu. Dzięki wielkie!
Fenix ​​Voltres
nikt nie jak to zrobić dla przędzarki?
Mike6679
32
Jedna uwaga: jeśli styl CKButton nie odziedziczy @android: style / Widget.Button, przycisk przestanie działać.
James
9
jaka jest różnica między parent="android:Widget.Button"i parent=@android:style/Widget.Button?
Błędy się zdarzyły
Dlaczego edytor układu nie wyświetla podglądu zmian zgodnie ze stylem przycisków ustawionym w motywie
Killer
0

W przypadku motywu Komponenty materiałowe wyglądałoby to tak:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="materialButtonStyle">@style/AppTheme.Button</item>
</style>
STAYER
źródło