介绍
UI画的图有个弹窗做筛选,筛选弹窗里面有个选择时间的功能。安卓选择时间,我采用底部弹出Dialog的方式。理想很美好,按照我的想法,确实两个Dialog都能做出来了,样子还不错。但是却遇到了:点击第一个Dialog的按钮弹出第二个Dialog时间选择弹窗,第一个Dialog就没有自己的遮罩层了,成为了一个平面的背景板。
题目描述的问题,如图所示:
我的第一个Dialog:
思路
-
首先我想的是,是不是第二个Dialog的背景遮罩层太浅了,我把它调黑点
mDialog.getWindow().setDimAmount(0.5f); // DimAmount 暗度 0背景全透明,1背景全黑
稍微好了一点,但是,第一个Dialog当背景,不像一个弹窗了,没有自己的遮罩层。效果如图:
-
然后又想到,让第二个Dialog没有遮罩层,遮罩层只用第一个Dialog的就好了。
最终解决
因为 Dialog 默认添加了“WindowManager.LayoutParams.FLAG_DIM_BEHIND”,该标记的作用是使位于该窗口下的界面变暗。把这个取消掉,Dialog自己的遮罩层就没啦!
mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
效果如图:
大功告成,这样第二个Dialog出来,第一个Dialog就不会融为平面的背景板了。