Wie wende ich einen Stil auf alle Schaltflächen einer Android-Anwendung an?

131

Ich habe einen Stil auf meine gesamte Anwendung angewendet:

AndroidManifest.xml:

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

Und in meiner 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>

Aber der Stil wird nicht angewendet.

Es tut mir leid, wenn ich nur den falschen Namen in ApplicationStyle- verwendet habe Item, aber ich habe keine Ahnung, wo ich nach den Objektnamen suchen soll, und einfach angenommen, dass dies android:buttonfür alle Schaltflächen gilt.

whlk
quelle
1
Bitte werfen Sie einen Blick auf meine Antwort auf stackoverflow.com/a/26625931/1065835
Maksim Dmitriev

Antworten:

206

Bei Android-Stilen verweisen Sie auf die voreingestellten Attribute, die Android festgelegt hat R.attr. In diesem Fall möchten Sie anscheinend referenzieren android:buttonStyle. Ich denke das würde funktionieren:

<style name="ApplicationStyle" parent="android:Theme">
  <item name="android:buttonStyle">@style/CKButton</item>
</style>
Dan Lew
quelle
1
Gott, ich habe lange nach solchen Funktionen gesucht. Ich habe keine Ahnung, warum die textColor-Schaltfläche der Schaltflächen nicht der textColor-Eigenschaft des Hauptthemas folgt. Vielen Dank!
Fenix ​​Voltres
Jemand nein, wie man das für Spinner macht?
Mike6679
31
Nur ein Hinweis: Wenn der CKButton-Stil @android: style / Widget.Button nicht erbt, funktioniert die Schaltfläche nicht mehr.
James
9
Was ist der Unterschied zwischen parent="android:Widget.Button"und parent=@android:style/Widget.Button?
Bugs passieren
Warum Layout-Editor keine Vorschau von Änderungen gemäß dem im Thema festgelegten Schaltflächenstil
Killer