首页 > 解决方案 > 使用叠加时如何获得较暗的背景?

问题描述

我正在使用系统覆盖来显示一些内容。但我希望叠加层使背景变暗。我该怎么做?

这就是我想要的:

这就是我得到的方式:

在此处输入图像描述

这是我设置叠加层的代码:

overlay = LayoutInflater.from(this).inflate(R.layout.activity_popup_dictionary, null);

final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.MATCH_PARENT,
        WindowManager.LayoutParams.MATCH_PARENT,
        WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
        PixelFormat.TRANSLUCENT);

params.gravity = Gravity.BOTTOM;        
params.x = 0;
params.y = 100;

windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(overlay, params);

标签: javaandroidoverlay

解决方案


就个人而言,我会通过DialogFragment执行此代码来实现这一点onStart;这样您就可以自定义对话框的透明度

dialog.window.apply {
    attributes.apply {
        dimAmount = 0.50f
        flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND
    }

    setBackgroundDrawable(ColorDrawable(0))
    setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
    setGravity(Gravity.CENTER)
}

推荐阅读