В Android, когда вы открываете диалог, экран позади него тускнеет. Есть ли способ контролировать, что это такое? Например, что делает его более тусклым или используя какой-то шаблон?
Пользовательский экран тускнеет с помощью диалога
Ответ 1
Да, это так. Вы можете управлять им.
После создания диалога:
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.dimAmount=0.0f; // Dim level. 0.0 - no dim, 1.0 - completely opaque
dialog.getWindow().setAttributes(lp);
Обновление: вы можете даже добавить смазку за диалоговое окно:
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Эта константа была устарела в уровне API 14.
Blurring больше не поддерживается.
Ответ 2
Или вы можете сделать:
dialog.getWindow().setDimAmount(0.5f);
Ответ 3
Это решение не сработало для меня. Существует еще один вариант, вы можете отменить флаг, который управляет затемнением. Этот код работал у меня:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Ответ 4
Отвечая на него довольно поздно, но я уверен, что со временем устареют, поэтому мой ответ определенно поможет кому-то. Прежде всего создайте диалог:
dialog = new Dialog(ActivityName.this);
dialog .setCancelable(false);
dialog .setContentView(R.layout.dialog_layout);
Затем получите окно этого диалога и добавьте флаг FLAG_DIM_BEHIND и, наконец, установите тусклую сумму на экране.
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
}
Затем покажите свое диалоговое окно,
dialog.show();
И перед тем, как вы отпустите свой диалог, очистите флаги:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
И затем отпустите:
dialog.dismiss();
Ответ 5
Следующие параметры работали для меня на 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 могут быть назначены диалогу.
dialog.getWindow().addContentView(view, params)