Android WebView中动态修改状态栏背景及文字颜色问题
解决Android WebView应用动态修改状态栏文字颜色问题
你需要针对不同Android版本添加对应代码,来设置状态栏文字和图标为白色,具体实现如下:
核心逻辑
Android 6.0(API 23)及以上系统才支持修改状态栏文字颜色:
- 当状态栏背景为深色(如黑色)时,需确保不启用浅色状态栏文字标记,文字和图标会默认显示为白色;
- 若之前代码或主题中开启了浅色文字标记,需手动清除该标记。
完整代码示例
在你设置状态栏背景色的Java函数中,补充以下代码:
// 设置状态栏背景为黑色 getWindow().setStatusBarColor(getResources().getColor(R.color.black)); // 根据Android版本设置状态栏文字为白色 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { // Android 11及以上版本使用WindowInsetsController WindowInsetsController insetsController = getWindow().getInsetsController(); if (insetsController != null) { // 清除浅色状态栏文字标记,恢复白色文字 insetsController.setSystemBarsAppearance(0, WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS); } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // Android 6.0到Android 10版本使用SystemUiVisibility int currentFlags = getWindow().getDecorView().getSystemUiVisibility(); // 移除LIGHT_STATUS_BAR标记,让状态栏文字显示为白色 currentFlags &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; getWindow().getDecorView().setSystemUiVisibility(currentFlags); }
注意事项
- 若应用主题中设置了
android:windowLightStatusBar="true",代码中的修改会覆盖主题配置; - 确保在
Activity生命周期合适时机或JS接口触发时执行该代码; - Android 5.0及以下系统不支持修改状态栏文字颜色,只能保持系统默认样式。
内容的提问来源于stack exchange,提问作者boa08
相关产品推荐
相关产品推荐

