我正在使用系统覆盖图来显示一些内容。但我想让叠加层使背景变暗。我该怎么办?
这就是我想要的方式:
这就是我的方法:
这是我设置覆盖图的代码:
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);
答案 0 :(得分:0)
就我个人而言,我将其设为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)
}
答案 1 :(得分:0)
奈杰尔·布朗的答案可能正常工作。
1:创建具有深色和低不透明度的形状(获得全屏显示)。
2:创建一个新的布局或框架,将您创建的形状作为背景
3:在这个新的几乎透明的布局的顶部,将您的布局覆盖您想要的任何内容
4:在后台设置一个点击侦听器,例如yourLayout.setVisibilty(View.GONE)
来关闭覆盖
希望它能起作用!