Das benutzerdefinierte DialogFragment kann nicht über dem Fragment transparent gemacht werden
Lesezeit: 5 Minuten
Ich muss einen Dialog über ein Fragment erstellen (das den gesamten Bildschirm einnimmt). Der Dialog muss ein schwebender Dialog sein, der über dem Fragment positioniert wird, wobei das Fragment außerhalb des Fragments abgedunkelt wird.
Für den benutzerdefinierten Dialog habe ich ein lineares Layout mit gekrümmten Kanten, egal was ich mache, der Dialog hat an allen Seiten einen schwarzen Rand (sehr klein). Ich habe alles versucht, um es transparent zu machen und zu verschwinden (so dass der gesamte Dialog nur das lineare Layout ist – gekrümmte Box)
Für das DialogFragment habe ich das für onCreateView
Ich habe alle möglichen Kombinationen in diesem Stil ausprobiert (nach dem, was ich online gesehen habe) und ich kann diesen störenden schwarzen Rand nicht loswerden, ich kann ihn weiß oder in einer anderen Farbe malen, wenn ich diesen LinearLayout-Hintergrund auf etwas anderes als setze #000000…
Ich habe buchstäblich 3-4 Stunden damit verbracht, ich hoffe, jemand anderes kann helfen …
Vielleicht möchten Sie auch den halbtransparenten schwarzen Hintergrund entfernen (Dimmen), überprüfen Sie diese Antwort: stackoverflow.com/a/33800422/2115904
– Andri Bas
18. April 2016 um 7:09 Uhr
Entfernt auch alle Ränder.. Dialog wird auf volle Breite erweitert.
– Udayaditya Barua
23. Juni 2016 um 13:56 Uhr
Und es wird eine Ausnahme verursachen: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Dialog.getWindow()' on a null object reference.
– CoolMind
16. August 2016 um 14:10 Uhr
Sie können auch anrufen getDialog().getWindow().setBackgroundDrawableResource(android.R.color.transparent); stattdessen. Damit dies keine Ausnahme auslöst, sollten Sie a aufrufen DialogFragment von Aktivität oder Fragment durch dialogFragment.show(...); -Methode, nicht die von FragmentTransaction add.
– CoolMind
16. August 2016 um 15:32 Uhr
Falls jemand nach dem Kotlin-Snippet sucht, hier ist es: dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)).
– Franz Laclé
7. September 2019 um 15:35 Uhr
sahar
Versuchen Sie dies (How to I create a 100% custom DialogFragment) diese Arbeit für den Dialog
Dialog dialog = new Dialog(getActivity());
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// layout to display
dialog.setContentView(R.layout.add_edit);
// set color transpartent
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
Stellen Sie Ihr Thema so ein, dass es für mich funktioniert hat
public class Progress extends DialogFragment {
int style = DialogFragment.STYLE_NO_TITLE;
int theme = R.style.MyDialog;
public Progress() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(style, theme);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.progress, container, false);
}
}
Sanghyun Byun
Im onActivityCreated
getDialog().getWindow().getAttributes().alpha = 0.9f; // An alpha value to apply to this entire window. An alpha of 1.0 means fully opaque and 0.0 means fully transparent
zum DialogFragment transparent
Sie können dies erreichen, indem Sie dies hinzufügen Dialogfragment oder BottomSheetDialogFragment
setBackgroundDrawableResource und clearFlags funktioniert bei mir (kotlin, android api v28)
– Wiely
2. Oktober 2019 um 7:33 Uhr
Benutzer3193413
Für völlig transparenten Einsatz: setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
Erstellen Sie für einen benutzerdefinierten Hintergrund eine Stildatei in Ihrem Werteordner (values/style.xml) und verwenden Sie sie: setStyle(DialogFragment.STYLE_NO_FRAME, yourpackagename.R.style.YOURE_CUSTOM_STYLE);
in Ihrer Stildatei das Attribut überschreiben: android:windowBackground sein @color/DialogBackgroundBlackSemiTransparent
setBackgroundDrawableResource und clearFlags funktioniert bei mir (kotlin, android api v28)