In Android when you pop up a dialog the screen behind it dims. Is there any way to control what that looks like? For example making it dim more or less or using some kind
This solution did not work for me. There is another option, you can cancel the flag that control dimming. This code worked for me:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Yes, it is. You can control it.
After creating dialog:
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.dimAmount = 0.0f; // Dim level. 0.0 - no dim, 1.0 - completely opaque
dialog.getWindow().setAttributes(lp);
Upd: you can even add blur behind the dialog:
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Upd2: Blurring is deprecated since API14:
This constant was deprecated in API level 14.
Blurring is no longer supported.
Or you can do:
dialog.getWindow().setDimAmount(0.5f);
The following parameters worked for me on Android 5.1
WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_DIM_BEHIND,
PixelFormat.TRANSLUCENT);
params.dimAmount = 0.65f;
params can be assigned to the dialog.
dialog.getWindow().addContentView(view, params)
Answering it quite late but I am sure things get deprecated with time so my answer would definitely help someone. First of all create a dialog:
dialog = new Dialog(ActivityName.this);
dialog .setCancelable(false);
dialog .setContentView(R.layout.dialog_layout);
Then get the window of that dialog and add a flag called FLAG_DIM_BEHIND and finally set the dim amount on the screen.
Window window = dialog.getWindow();
if(window != null){
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); // This flag is required to set otherwise the setDimAmount method will not show any effect
window.setDimAmount(0.5f); //0 for no dim to 1 for full dim
}
Then show your dialog,
dialog.show();
And before you dismiss your dialog, clear the flags:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
And then dismiss:
dialog.dismiss();