7

Ich habe einen Button-Stil mit einem blauen Hintergrund, der in API 22 funktioniert, aber die gleiche Schaltfläche erscheint in dunkelgrau ohne den angewandten Stil in Android 4. Das ist mein Stil:Button-Stil funktioniert in Android 5, aber nicht Android 4

<style name="MyApp.Plain" parent="Theme.AppCompat.NoActionBar"> 
     <item name="android:windowBackground">@drawable/background</item> 
     <item name="android:buttonStyle">@style/MyApp.Widget.Button</item> 
</style> 


    <style name="MyApp.Widget.Button" parent="@android:style/Widget.Button"> 
     <item name="android:background">@drawable/btn_blue</item> 
     <item name="android:focusable">true</item> 
     <item name="android:clickable">true</item> 
     <item name="android:textStyle">bold</item> 
     <item name="android:textSize">14sp</item> 
     <item name="android:textColor">#fff</item> 
     <item name="android:gravity">center_vertical|center_horizontal</item> 
    </style> 

Mein btn_blue.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/btn_disabled" android:state_enabled="false"/> 
    <item android:drawable="@drawable/btn_pressed" android:state_enabled="true" android:state_pressed="true"/> 
    <item android:drawable="@drawable/btn_normal_blue" android:state_enabled="true"/> 

</selector> 

und btn_normal_blue.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <gradient 
     android:angle="90" 
     android:endColor="#368ac6" 
     android:startColor="#0e58a4" /> 

    <corners android:radius="20dp" /> 

</shape> 

Was gibt es Der Grund für dieses Verhalten und wie kann ich das beheben?

EDIT: Dies funktioniert nicht mit Unterstützung v7: 22.2.0, funktioniert aber mit v7: 21.0.3. Ich habe nichts außer der Abhängigkeit geändert und AppCompatActivity zu ActionBarActivity geändert.

Möglicherweise ist dies ein Android-Fehler.

+2

zeigen die ziehbar/btn_blue Inhalt –

+0

Gibt es eine Chance Sie haben separate Ordner für die API-Versionen, und dieser Stil ist nur in einem von ihnen? – AdamMc331

+0

@ mcAdam331: Nein, ich habe nur eine Formatvorlage. – barq

Antwort

9

Versuchen buttonStyle statt android:buttonStyle, da diese AppCompat Attribut pre Lollipop ist, so sollte es ohne Android-Präfix sein.

+1

Dies sollte als die Antwort akzeptiert werden, behoben mein Problem! Vielen Dank. –

0

Ich habe einige Layouts gesehen, wo die Attribute zweimal angewendet werden, mit und ohne das Android-Präfix. Kannst du es versuchen:

Ich versuche derzeit zu finden, wo ich das vorher gesehen habe, und warum es funktioniert hat. Lass es mich wissen, wenn es so ist.

+0

erben, habe ich dies versucht, aber leider auf API 10 noch grauer Hintergrund für den Knopf. – barq

+0

@barq Ich denke, es war einen Versuch wert. Kannst du den Inhalt von btn_blue posten, wie Lucas gefragt hat? Das Problem könnte dann da drin sein. – AdamMc331

+0

@barq Ich fand, was ich dachte, es mit der Support-Bibliothek verwandt: http://stackoverflow.com/questions/18726865/custom-style-action-bar-not-working-in-android-4 Ich gehe meine Antwort für jetzt, falls ich in der Lage bin, es zu bearbeiten und Ihnen danach zu helfen. – AdamMc331

0

Try AppCompat zu verwenden:

<style name="MyApp.Widget.Button" parent="Base.TextAppearance.AppCompat.Button"> 
    <item name="android:background">@drawable/btn_blue</item> 
     ... 
    </style> 
+0

Danke, aber das hat leider auch nicht funktioniert. – barq

+0

Haben Sie den Stil auf die Schaltfläche eingestellt? –

+0

Nein, es ist der allgemeine Button-Stil für die App, also sollte es nicht nötig sein. Es funktioniert, ohne das in Android 5 zu tun. – barq

0

@ Michał Kisiel Antwort ist korrekt "Versuchen Sie buttonStyle anstelle von , da dies AppCompat Attribut vor Lollipop ist, so sollte es ohne Android-Präfix sein." Ich möchte nur hinzufügen, dass, wenn Sie zum Beispiel eine Ansicht erstellen programmatisch Sie android setzen sollte: button und button auch Beispiel:

<item name="android:buttonStyle">@style/OrangeButton</item> 
    <item name="buttonStyle">@style/OrangeButton</item> 
Verwandte Themen