HarmonyOS 鸿蒙Next中接入HMRouter后,我在首页的aboutToAppear中使用setWindowSystemBarProperties修改了状态栏的字体颜色,跳转到新页面后,状态栏的文字颜色又变为了默认颜色

HarmonyOS 鸿蒙Next中接入HMRouter后,我在首页的aboutToAppear中使用setWindowSystemBarProperties修改了状态栏的字体颜色,跳转到新页面后,状态栏的文字颜色又变为了默认颜色 【问题描述】:接入HMRouter后,我在首页的aboutToAppear中使用setWindowSystemBarProperties修改了状态栏的字体颜色,跳转到新页面后,状态栏的文字颜色又变为了默认颜色黑色,我用的官网示例的代码,改了其中的颜色,HMRouter的示例代码是下载的官网上的。我想要实现一个能切换状态栏蚊子颜色的按钮,实现状态栏文字能全局显示。目前我应用内必须有个切换模式的按钮,现在是通过这个事件eventHub发送的来实现的,这样也实现不了。该如何实现全局状态栏文字颜色的更改?

【问题现象】:

cke_114210.png

cke_115269.png

setWindowSystemBarProperties:页面切换后文字颜色会变为默认黑色

图片

【版本信息】:5.0.0(12)

【复现代码】:

图片

【尝试解决方案】:目前我尝试setStatusBarColor解决,但是我的需求是应用内必须有个切换模式的按钮,setStatusBarColor切换了以后退回到原来的页面,颜色还是以前的。

cke_16086.png


更多关于HarmonyOS 鸿蒙Next中接入HMRouter后,我在首页的aboutToAppear中使用setWindowSystemBarProperties修改了状态栏的字体颜色,跳转到新页面后,状态栏的文字颜色又变为了默认颜色的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在鸿蒙Next中,HMRouter页面跳转默认会重置状态栏样式。使用HMRouter的UIContext能力,在目标页面的aboutToAppear生命周期中调用setWindowSystemBarProperties方法重新设置状态栏属性。需确保每个页面的状态栏配置独立维护,避免全局样式被覆盖。

更多关于HarmonyOS 鸿蒙Next中接入HMRouter后,我在首页的aboutToAppear中使用setWindowSystemBarProperties修改了状态栏的字体颜色,跳转到新页面后,状态栏的文字颜色又变为了默认颜色的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,setWindowSystemBarProperties设置的状态栏颜色默认仅作用于当前页面,页面切换后会被重置。要实现全局状态栏文字颜色控制,建议采用以下方案:

  1. 统一状态栏管理:创建一个全局状态管理类(如AppScope),集中管理状态栏颜色配置,通过AppStorage或自定义事件总线同步到各页面。

  2. 页面生命周期适配:在每个页面的aboutToAppear中,从全局状态读取配置并调用setWindowSystemBarProperties。例如:

    aboutToAppear() {
      const globalColor = AppStorage.get('statusBarColor');
      window.setWindowSystemBarProperties({ 
        statusBarContentColor: globalColor 
      });
    }
    
  3. 路由拦截增强:若使用HMRouter,可在路由跳转前后钩子中统一处理状态栏设置,确保新页面加载时应用全局配置。

  4. 动态切换实现:切换按钮通过更新全局状态触发所有页面同步刷新:

    // 切换事件
    onChangeMode() {
      const newColor = isDarkMode ? '#FFFFFF' : '#000000';
      AppStorage.setOrCreate('statusBarColor', newColor);
      // 可选:立即更新当前页面
      window.setWindowSystemBarProperties({ 
        statusBarContentColor: newColor 
      });
    }
    

此方案通过全局状态持久化配置,结合页面生命周期自动应用,确保跨页面状态栏颜色一致性,避免单页面设置被覆盖的问题。

回到顶部