HarmonyOS 鸿蒙Next 动态设置状态栏颜色

HarmonyOS 鸿蒙Next 动态设置状态栏颜色

App 中有个根据不同样式显示不同UI的需求,需要能够动态修改状态栏颜色及状态栏文字颜色。

setWindowSystemBarProperties 方法修改的是整个 App 的状态栏样式,一旦修改全部页面都改,有没有方法能够只修改当前页面而不修改其他页面的状态栏样式。

3 回复
目前没有只修改当前页面的api,目前设置状态栏颜色是使用窗口的API,调整维度是从整个窗口进行调整。
每个页面还是需要在每个页面设置,需要做到页面的级别的话就需要在页面的onPageShow()生命周期中进行调整控制,在需要改变的页面直接调用setWindowSystemBarProperties方法。您可以参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#setwindowsystembarproperties9

更多关于HarmonyOS 鸿蒙Next 动态设置状态栏颜色的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


可以在相应的的页面里面 调用这个api,你可以封装几个通用的颜色数据,然后不同的页面,单独调用api进行设置

HarmonyOS 鸿蒙Next支持动态设置状态栏颜色,可以通过编程接口实现。

在HarmonyOS中,你可以使用window.setWindowSystemBarProperties方法来动态设置状态栏颜色。该方法允许你配置一个对象,其中包括statusBarColor(状态栏背景色)和statusBarContentColor(状态栏文字颜色)等属性。你可以根据需要监听应用内的相关事件(如页面滚动),在事件触发时调用此方法并传入新的颜色值,从而实现状态栏颜色的动态修改。

例如,在ArkUI中,你可以通过以下方式动态设置状态栏颜色:

import { window } from '@kit.arkui';

function changeStatusBarColor() {
  window.getLastWindow(getContext(), (err, win) => {
    if (err.code) {
      console.error("Error getting window: " + JSON.stringify(err.code));
      return;
    }
    win.setWindowSystemBarProperties({
      statusBarColor: '#ff0000', // 红色背景
      statusBarContentColor: '#ffffff' // 白色文字
    });
  });
}

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部