关于如何设置弹窗或者布局出现时背景变暗
1.设计思路
据我目前了解的一种实现思路,这种变暗可以通过给界面蒙上一层带有透明度的黑色来实现。
2.具体实现
我知道两种实现方法:
- 如果你想要给弹出的dialog窗体添加这种效果,可以在你编写的自定义dialog中来设置其背景,这个背景不是dialog的背景,而是后面的部分,通过getWindow()可以获得一个Window对象,通过给他添加属性来设置其背景变暗。我看到的这个代码是通过style.xml中编写的属性组来直接设置到这个window实例上。因为dialog弹窗是原来不存在于这个layout中的组件,是通过在java代码中动态的开启来实现,所以其绑定的layout不一定具有这种属性。
- 另一种弹窗的情况是,原来在layout中的组件其visibility为gone,在代码中设置其为可见。其可能没有背景透明度的属性。实现思路是将这个layout放到另一个相关布局中,再给这个布局铺满你想变暗的部分并设置具有透明度的背景。在弹窗显示时直接设置其父类布局的gone或者visible。