46

I ActionBarActivity aus dem Android 5 SDK bin mit und hier ist mein theme.xml für v21Android v21 Theme.Appcompat Farbakzent ignoriert wird, keine Polsterung auf Dialoge

<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:colorPrimary">@color/abc1</item> 
    <item name="android:colorPrimaryDark">@color/abc2</item> 
    <item name="android:colorAccent">@color/abc3</item> 
</style> 

Aber die Farben werden ignoriert und durch eine Standardfarbe ersetzt. Alle Dialoge erscheinen ohne Auffüllung.

Problem http://i62.tinypic.com/21cebcz.png

Auch Polsterung auch an anderen Orten wie benutzerdefinierten Toast ignoriert wird, Problem tritt nur in Lutscher-Geräten.

Edit:

Die Polsterung Problem war wegen fitsSystemWindow und ich habe es
this question. mit festgelegt.

Aber das Akzent Farbproblem ist immer noch da, und es betrifft nicht nur Dialoge, sondern die ganze App.

Antwort

122

Über die Akzentfarbe. Sie verwenden ein AppCompat-Design, sodass Sie Android aus dem Namespace in Ihrem Design entfernen sollten.

<style name="AppTheme_Light" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/abc1</item> 
    <item name="colorPrimaryDark">@color/abc2</item> 
    <item name="colorAccent">@color/abc3</item> 
</style> 

Über den Dialog. AppCompat unterstützt es nicht (wie ich weiß).
können Sie versuchen, diesen Stil in Ihrem Werte-v21 Ordner zu verwenden:

<style name="Theme" parent="FrameworkRoot.Theme"> 
    <item name="android:alertDialogTheme">@style/Theme.AlertDialog</item> 
</style> 

<style name="Theme.AlertDialog" parent="android:Theme.Material.Light.Dialog.Alert"> 
    <item name="android:colorPrimary">@color/demo_primary_color</item> 
    <item name="android:colorPrimaryDark">@color/demo_colorPrimaryDark</item> 
    <item name="android:colorAccent">@color/theme_accent_1</item> 
</style> 

UPDATE 23/04/2015: Mit dem Dialog SUPPORT BIBLIOTHEK V.22.1

Die neuen support library v22.1 Werke . Sie können eine android.support.v7.app.AlertDialog oder die neue AppCompatDialog verwenden.

Zum Beispiel:

import android.support.v7.app.AlertDialog 

AlertDialog.Builder builder = 
     new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle); 
      builder.setTitle("Dialog"); 
      builder.setMessage("Lorem ipsum dolor ...."); 
      builder.setPositiveButton("OK", null); 
      builder.setNegativeButton("Cancel", null); 
      builder.show(); 

Und einen Stil wie folgt verwenden:

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="colorAccent">#FFCC00</item> 
    <item name="android:textColorPrimary">#FFFFFF</item> 
    <item name="android:background">#5fa3d0</item> 
</style> 

Ansonsten können Sie in Ihrem aktuellen Thema definieren:

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <!-- your style --> 
    <item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item> 
</style> 

und dann im Code:

import android.support.v7.app.AlertDialog 

    AlertDialog.Builder builder = 
      new AlertDialog.Builder(this); 
+4

Ok, vor allem ist es eine Ehre, meine Frage nach dem Schöpfer des Karten-lib beantwortet zu haben. Das Padding-Problem wurde durch 'fitSystemWindow' verursacht und ich habe es behoben mit [diese Frage.] (Http://stackoverflow.com/questions/26599805/android-alert-dialog-not-styled-properly-on-lollipop ? Rq = 1) Edit: In Bezug auf die Akzentfarbe ist es nicht nur auf Dialoge beschränkt, aber es wird überall ignoriert – k1slay

+0

Just edited die Antwort über die Akzentfarbe. –

+2

Entfernen von 'android:' hat funktioniert. Danke vielmals. – k1slay

19

Update

ich erfolgreich Farben für AppCompat Dialoge Themen angewendet haben, dass jemand vielleicht hilfreich sein:

Werte/style.xml

<style name="Theme.MyApp" parent="Theme.AppCompat.Light"> 

... 

/* for android 4 - 4.4, we not define alert dialogs style */ 

</style> 

Werte-v21/style.xml

<style name="Theme.MyApp" parent="Theme.AppCompat.Light"> 

... 

/* define alert dialog style for android 5 */ 
<item name="android:alertDialogTheme">@style/Theme.AlertDialog</item> 

</style> 

<style name="Theme.AlertDialog" parent="Theme.AppCompat.Light.Dialog"> 

    <!--app abar color in Activties Task manager --> 
    <item name="colorPrimary">@color/my_color</item> 

    <!--copy/paste colors --> 
    <item name="colorAccent">@color/my_color</item> 

    <!--status bar color --> 
    <item name="colorPrimaryDark">@color/my_color</item> 


</style> 
+0

das löste meine Probleme nach viel Forschung. Vielen Dank!! – Giordano

+1

für mich funktioniert das nicht, wenn ich es nicht explizit anwende! Mit Code beim Initialisieren von ProgressDialog – JehandadK