statubar 透明显示在应用前 icon不透明 应用全屏 沉浸式
时间: 2023-12-12 17:03:15 浏览: 80
如果你想要实现状态栏透明显示并且内容显示在状态栏之下,同时状态栏中的图标不透明,并且应用全屏并且沉浸式,可以使用以下步骤:
1. 在 onCreate 方法中设置状态栏透明、应用全屏和沉浸式:
```
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
```
2. 在布局文件的根布局中添加 `android:fitsSystemWindows="true"` 属性,以确保内容显示在状态栏之下。
3. 在你的 Activity 中添加以下方法,以设置状态栏图标不透明:
```
private void setStatusBarIconColor(boolean lightStatusBar) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View decorView = getWindow().getDecorView();
if (lightStatusBar) {
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
decorView.setSystemUiVisibility(0);
}
}
}
```
4. 在你的 Activity 的 onStart 方法中调用该方法,并传入一个 boolean 值来指示状态栏图标是否不透明:
```
@Override
protected void onStart() {
super.onStart();
setStatusBarIconColor(false);
}
```
这将使状态栏透明,并将内容显示在状态栏之下。状态栏中的图标将不透明,并且应用全屏和沉浸式。
阅读全文