You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:35:50