Android: сделать все вокруг Dialog темнее, чем по умолчанию - PullRequest
10 голосов
/ 29 июня 2011

У меня есть собственный диалог со следующим стилем:

<style name="webtogo_app_style"  parent="@android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

Показывает диалог без полей, а все, что позади, становится (немного) темнее. Мой дизайнер хочет, чтобы все позади стало темнее, чем по умолчанию в Android, но не полностью черным.

Есть ли настройка для этого вообще?

Единственный обходной путь, который я могу придумать, - это использовать полноэкранное занятие вместо диалога и просто заполнить весь экран полупрозрачным цветом (например, # 99000000), а затем нарисовать поверх него мой диалог. Есть ли более простой способ?

Спасибо!

Ответы [ 4 ]

30 голосов
/ 29 июня 2011

Все, что вам нужно сделать, это поиграть с полем dimAmount в WindowManager.LayoutParams:

WindowManager.LayoutParams lp = myDialog.getWindow().getAttributes();
lp.dimAmount = 0.7f
23 голосов
/ 16 декабря 2012

Если вы создаете пользовательский диалог с прозрачной темой, вы должны добавить также строку ниже.и вы можете контролировать тусклое количество, используя код ответа выше.

myDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 

Для меня это выглядит так:

WindowManager.LayoutParams lp = myDialog.getWindow().getAttributes();
lp.dimAmount = 0.7f
myDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
1 голос
/ 20 декабря 2015
WindowManager.LayoutParams lp=getWindow().getAttributes();
//set transparency of background
lp.dimAmount=0.6f;  // dimAmount between 0.0f and 1.0f, 1.0f is completely dark
//lp.width = 200; 
//lp.height =  300; 
myDialog.getWindow().setAttributes(lp);
myDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
0 голосов
/ 07 декабря 2013

попробуйте сделать это

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

, где диалоговое окно - это имя созданного диалогового окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...