介绍

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就不会融为平面的背景板了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐