I\'m trying to get the background of a DialogFragment
to be completely clear.
With setting the style item android:windowIsFloating
to true
What works for me is to adjust the WinowManager.LayoutParams
in onStart()
of the DialogFragment:
@Override public void onStart() {
super.onStart();
Window window = getDialog().getWindow();
WindowManager.LayoutParams windowParams = window.getAttributes();
windowParams.dimAmount = 0.90f;
windowParams.flags |= WindowManager.LayoutParams.FLAG_DIM_BEHIND;
window.setAttributes(windowParams);
}
Create your own Customized dialog extends with FragmentDailog
and override this method
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
//set the dialog to non-modal and disable dim out fragment behind
Window window = dialog.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
return dialog;
}
NOTE: This answer works for me in case of DialogFragment
and BottomSheetDialogFragment
You need to get a handle to your DialogFrament (sometime after .show is called), and do this in a Posted Runnable:
DialogFragment dialog;
...
WindowManagerLayoutParams wlp = dialog.Dialog.Window.Attributes;
wlp.Flags &= ~WindowManagerFlags.DimBehind;
dialog.Dialog.Window.Attributes = wlp;
I got it from Aleks G's answer to Changing position of the Dialog on screen android .
Even a simpler solution is to change the style in the onCreate of the DialogFragment:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NO_FRAME, getTheme());
}