android dialogfragment 弹出时 状态栏变色了
时间: 2023-10-02 19:06:01 浏览: 329
android状态栏颜色改变
4星 · 用户满意度95%
当使用dialog来实现loading框时,每次dialog弹出时手机的状态栏会变成其他颜色,这会影响用户的感官体验。为了解决这个问题,你可以使用以下方法:
1. 首先,设置透明蒙层来解决状态栏变色的问题。你可以使用以下代码:
```java
Window dialogWindow = mDialog.getWindow();
dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialogWindow.setBackgroundDrawableResource(android.R.color.transparent);
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
lp.dimAmount = 0.0f;
dialogWindow.setAttributes(lp);
```
2. 然后,当dialog初始化时调用`dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)`方法,这样dialog弹出时,状态栏的颜色将和Activity展示的状态栏保持一致,不会随着dialog的弹出和销毁而改变。
然而,这种方法会引发另一个问题,就是当设置了透明背景后,状态栏的字体也会变成白色。如果Activity标题背景是白色的话,会造成冲突。为了解决这个问题,你可以尝试以下方法:
1. 在dialog弹出之前,将状态栏字体颜色设置为黑色。你可以使用以下代码:
```java
dialogWindow.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
```
2. 在dialog关闭后,将状态栏字体颜色恢复为白色。你可以使用以下代码:
```java
dialogWindow.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
```
这样就可以解决android dialogfragment弹出时状态栏变色的问题。
阅读全文