wake-up-neo.net

Material Design formt keine Warndialoge

Ich habe das appCompat-Materialdesign zu meiner App hinzugefügt, und es scheint, dass in den Warndialogen keine Primär-, Primärdunkel- oder Akzentfarben verwendet werden.

Hier ist mein Grundstil:

<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
    <item name="Android:textColorPrimary">@color/action_bar_gray</item>
</style>

Nach meinem Verständnis sollte der Schaltflächentext der Dialoge auch diese Farben verwenden. Verstehe ich mich falsch oder muss ich noch etwas tun?


Lösung:

Die markierte Antwort brachte mich auf den richtigen Weg.

<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
    <item name="Android:actionModeBackground">@color/apptheme_color_dark</item>
    <item name="Android:textColorPrimary">@color/action_bar_gray</item>
    <item name="sdlDialogStyle">@style/DialogStyleLight</item>
    <item name="Android:seekBarStyle">@style/SeekBarNavyTheme</item>
</style>

<style name="StyledDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
</style>
158
Matthew

AKTUALISIERT AM Aug 2019 MIT DEN MATERIALKOMPONENTEN FÜR Android library:

Mit der neuen Materialkomponenten für Android Bibliothek können Sie die neue androidx.appcompat.app.AlertDialog .

Verwenden Sie einfach etwas wie:

new MaterialAlertDialogBuilder(context)
            .setTitle("Dialog")
            .setMessage("Lorem ipsum dolor ....")
            .setPositiveButton("Ok", /* listener = */ null)
            .setNegativeButton("Cancel", /* listener = */ null)
            .show();

Sie können in Ihrem Thema Folgendes verwenden:

 <!-- Base application theme. -->
 <style name="AppTheme" parent="Theme.MaterialComponents.Light">
    ...
    <item name="materialAlertDialogTheme">@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog</item>
 </style>

Sie können auch den Konstruktor verwenden:

new MaterialAlertDialogBuilder(context, R.style.ThemeOverlay_MaterialComponents_MaterialAlertDialog)

MIT UNTERSTÜTZUNGSBIBLIOTHEK:

Mit dem neuen AppCompat v22.1 Sie können das neue Android.support.v7.app.AlertDialog verwenden.

Verwenden Sie einfach einen Code wie diesen:

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

Hier der AlertDialog zu KitKat: enter image description here

450

übergeben Sie beim Initialisieren von Dialog Builder den zweiten Parameter als Thema. Das Materialdesign mit API-Level 21 wird automatisch angezeigt.

AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_DARK);

oder,

AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
9
Sandeep Kumar

AppCompat macht das nicht für Dialoge (zumindest noch nicht)

EDIT: tut es jetzt. Verwenden Sie unbedingt Android.support.v7.app.AlertDialog

4
nadavfima

Du könntest benutzen

Material Design Library

Material Design Library für hübsche Warndialoge , Schaltflächen und andere Dinge wie Snack Bars. Derzeit ist es stark entwickelt.

Anleitung, Code, Beispiel - https://github.com/navasmdc/MaterialDesignLibrary

Anleitung zum Hinzufügen einer Bibliothek zu Android Studio 1.0 - Wie importiere ich eine Materialdesignbibliothek zu Android Studio?

.

Fröhliches Codieren;)

2
Inoy

Sie können dieses Projekt in Betracht ziehen: https://github.com/fengdai/AlertDialogPro

Es kann Ihnen Warndialoge für wichtige Themen zur Verfügung stellen, die fast mit denen von Lollipop identisch sind. Kompatibel mit Android 2.1.

2
Feng Dai

Versuchen Sie diese Bibliothek:

https://github.com/avast/Android-styled-dialogs

Es basiert auf DialogFragments anstelle von AlertDialogs (wie das von @afollestad). Der Hauptvorteil: Dialoge werden nach dem Drehen nicht geschlossen und Rückrufe funktionieren weiterhin.

1
David Vávra

Aus irgendeinem Grund scheint Android: textColor nur die Titelfarbe zu aktualisieren. Sie können die Farbe des Nachrichtentexts mithilfe von ändern

SpannableString.AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.MyDialogTheme));

AlertDialog dialog = builder.create();
                Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");
                wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                dialog.setMessage(wordtoSpan);
                dialog.show();
1
CaptRespect