首先设置透明蒙层我先把代码贴出来
Window dialogWindow = mDialog.getWindow();
dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialogWindow.setBackgroundDrawableResource(android.R.color.transparent);// 一句话搞定
//重新设置
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
dialogWindow.setGravity(Gravity.RIGHT | Gravity.TOP);
lp.dimAmount = 0;
lp.dimAmount = 0.0f; //dimAmount在0.0f和1.0f之间,0.0f完全不暗,1.0f全暗
lp.x = 40; // 新位置X坐标
lp.y = y; // 新位置Y坐标
//(当Window的Attributes改变时系统会调用此函数)
dialogWindow.setAttributes(lp);
最主要的是这句代码
dialogWindow.setBackgroundDrawableResource(android.R.color.transparent);// 一句话搞定
给窗口设置透明背景
但是这样设置之后会引发另外一个问题那就是虽然dialog的窗口背景透明了但是状态栏也会改变字体成白色的了,如果Activity标题背景是白色就造成了冲突,情况如下:
这样就很难看了,所以得想办法解决这个问题,具体怎么解决这个问题呢,方法如下:
// dialog 初始化的时候调用
dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
此时弹出dialog的时候,和 Activity 展示的状态栏是一样的。不会随着 dialog 的弹出和销毁改变。
好了今天这个问题就分享到这里。
特此记录下