2015-01-22 9 views
10

Ich bin mit dem AppCompat Thema und ich möchte auf meinen Tasten, um das minHeight Attribut:Wie Anpassen von AppCompat Material Button Style?

<style name="Theme.MyTheme" parent="Theme.AppCompat"> 
    <item name="android:buttonStyle">@style/MyButtonStyle</item> 
</style> 

<style name="MyButtonStyle" parent="...?"> 
    <item name="android:minHeight">60dp</item> 
</style> 

Allerdings gibt es keinen Widget.AppCompat.Button Stil für MyButtonStyle als Mutter einzustellen. Wenn ich android:Widget.Button verwende, dann sehen alle meine Tasten wie der alte beschissene Stil aus. Ich habe verschiedene andere AppCompat-Designs wie TextAppearance.AppCompat.Button ausprobiert, aber sie funktionieren nicht.

Wenn Sie ein übergeordnetes Thema für den Schaltflächenstil auslassen, wird die Schaltfläche nicht korrekt formatiert. Wie kann ich den Standard Theme.AppCompatbuttonStyle anpassen?

+0

Sie haben jetzt auch eine Schaltfläche hinzugefügt: android.support.v7.widget.AppCompatButton – irvanjit

Antwort

3

können Sie haben Base.MyButtonStyleandroid:Widget.Holo.Button auf API erweitern 14+ (in res/values-v14/styles.xml) und android:Widget.Material.Button auf API 21+ (in res/values-v21/styles.xml. Dieser Stil entsprechend der Gerätesystem-Version ändern. Legen Sie Ihre Plattform spezifische Änderungen hier.

dann haben MyButtonStyleBase.MyButtonStyle erweitern und die android:minHeight hier (in res/values/styles.xml) definieren. Diese für alle Plattformen gelten.

Sie Tasten dann Stil verwenden können MyButtonStyle.

In diesem Beispiel wird davon ausgegangen, dass Ihr SDK mindestens 14 ist.

Und ja, es gibt keinen appcompat-v7-Button-Stil (na ja, zumindest noch nicht).

EDIT

Dies vorausgesetzt, dass Sie mit Holo-Taste auf Plattformen älter als Lollipop OK sind. Es fühlt sich unauffällig an und wenn Sie ohne Wellen auskommen, sollte es gut gehen. Wenn Sie Wellen möchten, schlage ich vor, Sie googlen für eine Lollipop-Button-Bibliothek von Drittanbietern.

+0

Danke. Aus irgendeinem Grund dachte ich daran, das Schaltflächenthema so einzustellen, dass Holo bei 15-20 aus irgendeinem Grund nicht richtig funktioniert, aber natürlich tut es das und bringt das gewünschte Ergebnis hervor. –

4

meine eigene Frage beantworten zu können, erscheint es AppCompat does not in fact support das Button Widget derzeit:

  • Alles zur Verfügung gestellt von:

    AppCompat für eine Teilmenge von UI-Widgets auf frühere Versionen von Android ähnliches Verhalten liefert AppCompats Symbolleiste (Aktionsmodi usw.)

  • EditText
  • Spinner
  • CheckBox
  • RadioButton-
  • Switch (verwenden Sie die neuen android.support.v7.widget.SwitchCompat)
  • CheckedTextView

Die einzige Abhilfe, die ich sehen würde die Schaltfläche Material Stil neu aus dem Android-Quelltext, eine Aufgabe, die sich außerhalb des Rahmens meines Wunsches erstreckt.

+5

Es unterstützt es jetzt für 22.1.0 – Caipivara

+0

compile 'com.android.support:appcompat-v7:22.0.0' in Build .gradle in Android Studio scheint das Paket nicht zu bekommen. Wie sollte ich die v22 aufnehmen? – dowjones123

+1

Die neueste Version von appcompat hat tatsächlich eine Schaltfläche: android.support.v7.widget.AppCompatButton – irvanjit

1

Gewohnheit Button Style Mit AppCompat +22 in Ihrem styles.xml

<style name="Button.Tinted" parent="Widget.AppCompat.Button"> 
     <item name="colorButtonNormal">YOUR_TINT_COLOR</item> 
     <item name="colorControlHighlight">@color/colorAccent</item> 
     <item name="android:textColor">@android:color/white</item> </style> 

in Ihrem layout.xml

<Button 
     android:id="@+id/but_next" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/but_continue" 
     android:theme="@style/Button.Tinted" /> 
+0

Das war mein Ansatz, bis ich bemerkte, dass deaktivierte Tasten genauso aussahen wie aktivierte –

Verwandte Themen