Ответ 1
Все, что вам нужно сделать, это поиграть с полем dimAmount
в WindowManager.LayoutParams
:
WindowManager.LayoutParams lp = myDialog.getWindow().getAttributes();
lp.dimAmount = 0.7f
У меня есть пользовательский диалог со следующим стилем:
<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), а затем нарисовать мой диалог над ним. Есть ли более простой способ?
Спасибо!
Все, что вам нужно сделать, это поиграть с полем dimAmount
в WindowManager.LayoutParams
:
WindowManager.LayoutParams lp = myDialog.getWindow().getAttributes();
lp.dimAmount = 0.7f
Если вы создаете настраиваемый диалог с полупрозрачной темой, вам также нужно добавить строку ниже. и вы можете управлять тусклым количеством, используя выше код ответа.
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);
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);
попробуйте сделать это
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
где диалог - это имя созданного диалогового окна.