webentwicklung-frage-antwort-db.com.de

Android v21 Theme.Appcompat Farbakzent wird ignoriert, kein Auffüllen von Dialogen

Ich verwende ActionBarActivity aus dem Android 5 SDK und hier ist mein theme.xml für v21

<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>

Die Farben werden jedoch ignoriert und durch eine blaugrüne Standardfarbe ersetzt, und alle Dialogfelder werden ohne Auffüllung angezeigt.

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

Außerdem wird das Auffüllen auch an anderen Stellen ignoriert, z. B. bei benutzerdefiniertem Toast. Das Problem tritt nur bei Lollipop-Geräten auf.

Bearbeiten:

Das Auffüllproblem war auf fitsSystemWindow zurückzuführen und ich habe es mit behoben
diese Frage. .

Das Problem mit der Akzentfarbe ist jedoch weiterhin vorhanden und betrifft nicht nur die Dialoge, sondern die gesamte App.

51
k1slay

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

<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ß).
Sie können versuchen, diesen Stil in Ihrem Ordner values-v21 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: SUPPORT LIBRARY V.22.1

Das neue support library v22.1 arbeitet mit dem Dialog. Sie können ein Android.support.v7.app.AlertDialog oder das neue AppCompatDialog verwenden.

Beispielsweise:

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 benutze einen Stil wie diesen:

<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 in deinem Code:

 import Android.support.v7.app.AlertDialog

    AlertDialog.Builder builder =
           new AlertDialog.Builder(this);
125

pdate

Ich habe erfolgreich Farben für appCompat-Dialogdesigns angewendet. Vielleicht ist dies für jemanden hilfreich:

values ​​/ style.xml

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

...

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

</style>

values-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>
22

Die aktuelle Version von AppCompat wendet keine Einfärbung auf AlertDialogs an.

Versuchen Sie es mit https://github.com/afollestad/material-dialogs , es funktioniert großartig!

8
AlexKorovyansky