2015-06-16 15 views
9

Ich versuche, meine Stile einzurichten, um alle Schaltflächen eine bestimmte Farbkombination, insbesondere blau mit weißem Text. Hier ist meine Haupt styles.xml:Android-Standard-Button-Styling funktioniert nicht

<resources> 
    <style name="CustomTheme" parent="MaterialDrawerTheme.Light.DarkToolbar"> 
     <!-- various items --> 

     <item name="android:buttonStyle">@style/ButtonStyle</item> 
    </style> 

    <!-- a couple of other styles --> 

    <style name="ButtonStyle" parent="android:style/Widget.Button"> 
     <item name="android:textSize">19sp</item> 
     <item name="android:textColor">@color/primaryTextContrast</item> 
     <item name="android:background">@color/primary</item> 
    </style> 
</resources> 

Und im Manifest:

<application 
     android:name=".CustomApplication" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/application_name" 
     android:theme="@style/CustomTheme"> 

color/primary ist dunkelblau, und color/primaryTextContrast ist weiß. Auf Lollipop sieht die Schaltfläche perfekt aus. Auf einem 4.1 Gerät ist es hellgrau mit schwarzem Text. Jede Ressource, die ich dafür gefunden habe, sieht genau so aus, wie ich es mache. Ich weiß nicht, was ich hier vermisse.

Ich habe ein ähnliches Problem mit der Steuerung der Textgröße in der Basis-Stil-Definition.

Update: hier sind die Farben.

<resources> 
    <color name="primary">#3F51B5</color> 
    <color name="dark">#303F9F</color> 
    <color name="accent">#FFCA28</color> 
    <color name="background">@android:color/white</color> 
    <!-- Color for text displayed on top of the primary or dark color --> 
    <color name="primaryTextContrast">@android:color/white</color> 
    <!-- Color for text displayed on the background color (which I think will always be white) --> 
    <color name="basicText">@color/primary</color> 
    <!-- Color for text displayed on the accent color --> 
    <color name="accentText">#303F9F</color> 
</resources> 

Hier v19/styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="FullscreenTheme" parent="MaterialDrawerTheme.Light.DarkToolbar.TranslucentStatus"> 
     <item name="android:windowTranslucentNavigation">true</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:windowTranslucentStatus">true</item> 
    </style> 
</resources> 

hier v21:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="AppTheme" parent="CustomTheme"> 
     <item name="android:windowContentTransitions">true</item> 
     <item name="android:windowAllowEnterTransitionOverlap">true</item> 
     <item name="android:windowAllowReturnTransitionOverlap">true</item> 
     <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> 
     <item name="android:windowSharedElementExitTransition">@android:transition/move</item> 
    </style> 
</resources> 

Ich glaube nicht, entweder von diesen ist, was richtig auf 5.1 funktioniert bewegt.

+0

Ihr Code funktioniert perfekt in meiner Galaxie s3 mini (Android 4.1), sind Sie sicher, dass Sie nicht über zwei Versionen von styles.xml, und das mit diesem Code ist> v16? – Ruocco

+0

Ich habe zwei Versionen, aber dies ist die in main/res/values. – nasch

+0

@Jones Ich habe meine zusätzlichen Style-Dateien hinzugefügt. – nasch

Antwort

14

AppCompat Mit 22.1.+ (22.2.0 sollte auch funktionieren), definiert ich einen Stil wie folgt aus:

<style name="MyApp.Button.Red" parent="Base.Widget.AppCompat.Button"> 
    <item name="colorButtonNormal">@color/primary</item> 
    <item name="android:colorButtonNormal">@color/primary</item> 
    <item name="android:textColor">@android:color/white</item> 
</style> 

und dann angewendet, um das Thema in einer Schaltfläche mit dem nativen theme Attribut aus android Namensraum, wie in this sagte ehrfürchtige Beitrag von Chris Banes.

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/sign_up_button" 
    android:theme="@style/MyApp.Button.Red" /> 
+0

'android: textColor' ist bereits im Theme definiert, warum definierst du es wieder in Button deklaration. –

+0

Meine Schuld. Probleme beim Kopieren/Einfügen :) - bearbeitet –

+2

Gibt es keine Möglichkeit, den Stil aller Schaltflächen in der App zu ändern, sodass ich nicht auf jeder Schaltfläche etwas einstellen muss? Ich dachte, dass diese Stildateien dazu in der Lage sein sollten. – nasch

-2

gradle: compile 'com.android.support:appcompat-v7:22.2.0'

Für Thema in Android Lollipop richtig funktioniert, müssen Sie ActionBarActivity statt Aktivität verlängern. Durch diese Änderung sollte Ihre Designeinstellung ordnungsgemäß funktionieren. Dies ist allgemein für andere Menschen, die für niedrigere Version von Android, Sie nicht Android verwenden sollten: Tag in item-namen Definition `

+0

Ich erweitere AppCompatActivity ... können Sie einige unterstützende Dokumentation zur Verfügung stellen, denn das klingt wirklich seltsam, dass Themen nicht funktionieren würden, wenn Sie ActionBarActivity erweitern. – nasch

+0

Ich weiß es seltsam, aber nach Stunden des Debuggens, fand ich, dass die Erweiterung von ActionBarActivity die Arbeit für mich erledigt.Wenn ich Aktivität erweitert wurde, Theme.AppCompat wurde nicht Actionbar.So ich dachte, es könnte die Arbeit für Sie tun – gaurav

+0

ich don Ich denke, dies ist die Antwort für mich, da ActionBarActivity veraltet ist und durch AppCompatActivity ersetzt wird, was ich verwende. Trotzdem danke. – nasch

2

Ich habe versucht, das Hinzufügen buttonStyle ohne android: Präfix und es löste das Problem. Ja, komisch.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="buttonStyle">@style/ButtonStyle</item> 
    <item name="android:buttonStyle">@style/ButtonStyle</item> 
</style> 
+0

Ich hatte kein Glück mit Ihrer Lösung. Alle Stile funktionieren, außer der Hintergrundfarbe der Schaltfläche. –

+0

Seltsam, löste es für mich. – fhucho

+0

Ich arbeite gerade an etwas anderem, aber ich werde es versuchen, danke. – nasch

Verwandte Themen