Android:使Dialog周围的一切都比默认更暗

ise*_*all 11 android background dialog transparent

我有一个以下风格的自定义对话框:

<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>
Run Code Online (Sandbox Code Playgroud)

它显示了一个无边框对话框,后面的任何内容都会(稍微)变暗.我的设计师希望背后的一切都比Android的默认设置更暗,但不是完全黑的.

这有什么设置吗?

我能想到的唯一解决方法是使用全屏活动而不是对话框,只需用半透明颜色填充整个屏幕(例如#99000000),然后在其上绘制对话框.有没有更简单的方法?

谢谢!

Mar*_*son 33

您需要做的就是在以下dimAmount场地中玩耍WindowManager.LayoutParams:

WindowManager.LayoutParams lp = myDialog.getWindow().getAttributes();
lp.dimAmount = 0.7f
Run Code Online (Sandbox Code Playgroud)


Yas*_*aka 23

如果要创建主题半透明的自定义对话框,则还必须添加以下行.并且您可以使用上面的答案代码控制昏暗的数量.

myDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
Run Code Online (Sandbox Code Playgroud)

对我来说,它看起来如下:

WindowManager.LayoutParams lp = myDialog.getWindow().getAttributes();
lp.dimAmount = 0.7f
myDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,只有在添加后才能工作:`window.setAttributes(lp);`(该方法触发一个事件.) (6认同)
  • 我想补充一点,必须先调用 myDialog.show()。 (2认同)