【问题标题】:Android: make everything around Dialog darker than defaultAndroid:使 Dialog 周围的所有内容都比默认值更暗
【发布时间】:2011-06-29 10:03:28
【问题描述】:

我有一个具有以下样式的自定义对话框:

<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)填充整个屏幕,然后在上面绘制我的对话框。有没有更简单的方法?

谢谢!

【问题讨论】:

  • 你的方法听起来很简单。我认为覆盖对话框并创建自定义对话框需要更多的努力

标签: android background dialog transparent


【解决方案1】:

您需要做的就是在WindowManager.LayoutParams 中使用dimAmount 字段:

WindowManager.LayoutParams lp = myDialog.getWindow().getAttributes();
lp.dimAmount = 0.7f

【讨论】:

    【解决方案2】:

    如果您要创建带有半透明主题的自定义对话框,您还必须添加以下行。 您可以使用上述答案的代码控制暗淡量。

    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); 
    

    【讨论】:

    • 我想补充一点,必须先调用 myDialog.show()。
    • 对我来说,它只有在添加后才起作用:window.setAttributes(lp);(该方法会触发一个事件。)
    【解决方案3】:
    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); 
    

    【讨论】:

      【解决方案4】:

      尝试这样做

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

      其中 dialog 是创建的对话框的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多