Wie entferne ich den schwarzen Hintergrund aus einem Dialogfeld in Android? Das Bild zeigt das Problem.
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
android
android-dialog
Programmierer
quelle
quelle
Antworten:
Fügen Sie diesen Code hinzu
Oder stattdessen:
quelle
dialog.getWindow().setBackgroundDrawable(new ColorDrawableResource(R.color.transparent));
dialog.getWindow().setBackgroundDrawableResource(R.color.transparent);
Verwendung in Java
Ich hoffe dir zu helfen!
quelle
Ich habe mich dem einfacheren Problem gestellt und die Lösung, die ich gefunden habe, war das Anwenden eines transparenten Bachgrundthemas. Schreiben Sie diese Zeilen in Ihre Stile
Und dann hinzufügen
in Ihrer Hauptmanifestdatei innerhalb des Blocks der Dialogaktivität.
Plus in Ihrer Dialogaktivität XML-Set
quelle
Irgendwie hat Zacharias Lösung bei mir nicht funktioniert, also habe ich das folgende Thema verwendet, um dieses Problem zu beheben ...
Man kann dieses Thema wie folgt auf Dialog setzen
Genießen!!
quelle
Du kannst den ... benutzen:
Methode.Und das folgende ist das Dokument:
quelle
Das Dialogfeld "Dialog" füllt die Standardfarbe für den schwarzen Hintergrund oder das Thema, sodass Sie den
TRANSPARENT
Hintergrund in "Dialog" festlegen müssen . Versuchen Sie den folgenden Code: -quelle
Wenn Sie den dunklen Hintergrund des Dialogs zerstören möchten, verwenden Sie diese Option
quelle
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Objects.requireNonNull(alertDialog.getWindow()).setDimAmount(0); }
Ein Problem, das ich bei allen vorhandenen Antworten festgestellt habe, ist, dass die Ränder nicht erhalten bleiben. Dies liegt daran, dass alle das
android:windowBackground
Attribut, das für die Ränder verantwortlich ist, mit einer Volltonfarbe überschreiben . Ich habe jedoch ein wenig im Android SDK gegraben und festgestellt, dass der Standardfensterhintergrund zeichnbar ist, und ihn ein wenig geändert, um transparente Dialoge zu ermöglichen.Kopieren Sie zunächst /platforms/android-22/data/res/drawable/dialog_background_material.xml in Ihr Projekt. Oder kopieren Sie einfach diese Zeilen in eine neue Datei:
Beachten Sie, dass auf eingestellt
android:color
ist?attr/colorBackground
. Dies ist das Standard-Vollgrau / Weiß, das Sie sehen. Die Farbe definiert in zu ermöglichen ,android:background
in Ihrem benutzerdefinierten Stil transparent und zeigen die Transparenz zu sein, alles , was wir tun müssen , ist der Wandel?attr/colorBackground
zu@android:color/transparent
. Jetzt wird es so aussehen:Gehen Sie danach zu Ihrem Thema und fügen Sie Folgendes hinzu:
newly_created_background_name
Stellen Sie sicher, dass Sie den tatsächlichen Namen der soeben erstellten Zeichnungsdatei durchsome_transparent_color
den gewünschten transparenten Hintergrund ersetzen .Danach müssen wir nur noch das Thema festlegen. Verwenden Sie diese Option, wenn Sie Folgendes erstellen
AlertDialog.Builder
:Dann erstellen, erstellen und zeigen Sie den Dialog wie gewohnt!
quelle
Gleiche Lösung wie zGnep, jedoch mit XML:
quelle
Versuchen Sie dies in Ihrem Code:
es wird definitiv funktionieren ... in meinem Fall ...! mein Freund
quelle
Dies habe ich getan, um mit AlertDialog Transluzenz zu erreichen.
Erstellt einen benutzerdefinierten Stil:
Und dann erstellen Sie den Dialog mit:
quelle
In meinem Fall funktioniert die Lösung folgendermaßen:
Und zusätzlich in XML des benutzerdefinierten Dialogs:
quelle
Verwenden Sie diesen Code, es funktioniert mit mir:
quelle
Stellen Sie diesen Stilcode in Stil ein
Und ändern Sie einfach false in true unter der Zeile
Es wird Ihren Hintergrund verdunkeln.
quelle
Achtung: Verwenden Sie den Builder nicht zum Ändern des Hintergrunds.
ändern
Bei Verwendung von Dialog.builder wird keine
getWindow()
Option angegeben.quelle
Das ist mein Weg, du kannst es versuchen!
quelle
Falls Sie die
DialogFrament
Klasse erweitert haben, können Sie das Thema festlegen mit:Erstellen Sie dann das benutzerdefinierte Design in Ihrer Datei styles.xml (Parameter finden Sie in der Antwort von @ LongLv).
Vergessen Sie nicht hinzuzufügen,
<item name="android:windowCloseOnTouchOutside">true</item>
wenn der Dialog geschlossen werden soll, wenn der Benutzer außerhalb des Dialogs berührt.quelle
Wenn Sie ein benutzerdefiniertes Dialogfeld mit einer benutzerdefinierten Klasse verwenden, müssen Sie die Transparenz in der Klasse ändern. Fügen Sie diese Zeile in onCreate () hinzu:
quelle
dialog.getWindow (). setBackgroundDrawable (neues ColorDrawable (ContextCompat.getColor (ctx, android.R.color.transparent)));
quelle
Stellen Sie sicher, dass
R.layout.themechanger
keine Hintergrundfarbe vorhanden ist, da der Dialog standardmäßig eine Standardhintergrundfarbe hat.Sie müssen auch hinzufügen
dialog.getWindow().setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));
Und schlussendlich
quelle