Подтвердить что ты не робот

Пользовательский экран тускнеет с помощью диалога

В Android, когда вы открываете диалог, экран позади него тускнеет. Есть ли способ контролировать, что это такое? Например, что делает его более тусклым или используя какой-то шаблон?

4b9b3361

Ответ 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);

Blurring устарел с API14:

Эта константа была устарела в уровне 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)