Ich versuche, einen AlertDialog mit dem Standard-AppCompat-Design anzuzeigen, während die Hauptaktivität ein benutzerdefiniertes Design hat. Mein Problem ist, dass der angezeigte AlertDialog einige der übergeordneten Aktivitätsstile erbt (insbesondere die Akzentfarbe, aber auch die Textfarbe).Benutzerdefiniertes Aktivitätsdesign mit Standarddialogdesign
Hier ist meine Tätigkeit Thema:
<style name="Theme.MainMenu.MyTheme" parent="Theme.AppCompat">
<item name="android:windowBackground">@drawable/background</item>
<item name="colorPrimary">@color/myPrimary</item>
<item name="colorPrimaryDark">@color/myPrimary_dark</item>
<item name="colorAccent">@color/myAccent</item>
</style>
Hier ist, wie ich den Alertdialog (enthaltend eine EditText)
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.Theme_AppCompat_Light_Dialog_Alert);
erstellen Wenn ich der Alertdialog kein Thema meiner Tätigkeit angeben, Anzeige wie erwartet:
Aber wenn ich MyTheme auf meine Aktivität anwenden, sieht der AlertDialog wie folgt aus:
Trotz der Theme_AppCompat_Light_Dialog_Alert Thema ich dem Builder geben. Die Akzentfarbe (hier in Rot) und die EditText-Farbe scheinen vom Aktivitätsthema geerbt zu sein.
Warum gibt es diese Vererbung und wie kann sie vermieden werden, oder gibt es eine Lösung, um zu erzwingen, dass der AlertDialog das "vollständige" Standardthema verwendet?
Vielen Dank
Edit 1:
Wie MinnuKaAnae vorgeschlagen, ich einen benutzerdefinierten Stil für die DialogAlert erstellen, basierend auf Theme.AppCompat.Light.Dialog.Alert Überschreiben der benötigten Attribute, aber ich muss auf die Standardfarben von AppCompat zeigen:
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">@color/NEED_APPCOMPAT_DEFAULT_COLOR_ACCENT_HERE</item>
<item name="android:textColorPrimary">@color/NEED_APPCOMPAT_DEFAULT_PRIMARY_COLOR_HERE</item>
<item name="android:background">@color/NEED_APPCOMPAT_DEFAULT_BACKGROUND_COLOR_HERE</item>
</style>
Und in meinem Fall Ich muss auch die EditText-Textfarbe auf die Light-Version (schwarzer Text) überschreiben, da die Aktivität nicht auf dem Light-Thema basiert: das Attribut android: editTextColor scheint die Aufgabe nicht zu erfüllen.
Ihre Theme_AppCompat_Light_Dialog_Alert veröffentlichen – MinnuKaAnae
ein eigenes Design erstellen und setzte in Ihrem colorPrimary, colorDarkPrimary und coloraccent Farbe und verwenden Sie es in diesem Dialog –
@MinnuKaAnae: Die Theme_AppCompat_Light_Dialog_Alert ist der Stil der Android-Support-Bibliothek. – Virtual