状态栏相关设置
设置是否可见
正常情况下新建app时,UI界面会占满整个屏幕,屏幕顶部的状态栏会被覆盖,如果想让状态栏可见,可以使用下面的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 让状态栏保持可见
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 一定要在调用setContentView之前设置
setContentView(R.layout.activity_main);
}
状态栏背景透明
上面的代码只是让状态栏可见,如果你的MainView的父视图中设置了背景,那么状态栏的背景也会受到影响,如果想设置状态栏的背景,可以使用下面的方法:
先创建一个StatusBar工具类:
package com.example.mediaplayproject.utils;
import android.app.Activity;
import android.view.View;
import android.view.WindowManager;
public class StatusBar {
private Activity activity;
public StatusBar(Activity activity){
this.activity = activity;
}
public void setColor(int color){
//将状态栏设置为传入的color
View view = activity.getWindow().getDecorView();
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
activity.getWindow().setStatusBarColor(activity.getResources().getColor(color));
}
/**
* 隐藏状态栏
* @author wm
* @createTime 2023/9/24 21:27
*/
public void hide(){
activity.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
/**
* 设置状态栏字体颜色
* @author wm
* @createTime 2023/9/24 21:27
* @param isDarkBackground:
*/
public void setTextColor(boolean isDarkBackground){
View decor = activity.getWindow().getDecorView();
if (isDarkBackground) {
// 黑暗背景字体浅色
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
} else {
// 高亮背景字体深色
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
}
然后在MainActivity的onCreate中设置状态栏的背景颜色为透明:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 让状态栏保持可见
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 设置颜色为透明
StatusBar statusBar = new StatusBar(MainActivity.this);
statusBar.setColor(R.color.transparent);
// 一定要在调用setContentView之前设置
setContentView(R.layout.activity_main);
}
R.color.transparent颜色为透明:
<!--透明-->
<color name="transparent">#00000000</color>