HarmonyOS 鸿蒙Next 状态栏颜色如何动态变更

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 状态栏颜色如何动态变更

如何动态变更手机状态背景颜色及文字颜色

咨询场景描述:
A页面(状态白)pushUrlB页面后, 怎么使其状态蓝色变更为黑色, 退出B回到A,状态栏颜色继续变更回白

3 回复

让您久等了,目前设置状态栏颜色是使用窗口的API,调整维度是从整个窗口进行调整。需要做到页面的级别的话就需要在页面的生命周期中进行调整控制,在需要改变的页面直接调用setWindowSystemBarProperties方法。您可以参考官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-window-V13#setwindowsystembarproperties9


参考如下代码:

onPageShow(): void {

    window.getLastWindow(getContext(), (err, data) => {

      let win: window.Window;

      if (err.code) {

        console.error("error code :" + JSON.stringify(err.code))

        return;

      }

      try {

        win = data;

        //设置窗口为全屏模式

        win.setWindowLayoutFullScreen(true);

        // 设置状态栏

        win.setWindowSystemBarProperties({

          // 设置状态栏颜色为其他颜色

          statusBarColor: '#00ff00',

          // 设置状态栏文本颜色为白色

          statusBarContentColor: '#353535'

        })

        console.info('带状态栏沉浸式窗口设置完成')

      } catch (expextion) {

        console.error("error cause :" + JSON.stringify(expextion))

      }

    })

  }

您如果需要在A页面和B页面变更手机状态背景颜色及文字颜色,可以在两个页面都使用setWindowSystemBarProperties()方法设置状态栏的颜色,看是否能解决您的问题

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


深色代码主题
复制
[@Entry](/user/Entry)
[@ComponentV2](/user/ComponentV2)
struct Index {
  private stackPath: NavPathStack = new NavPathStack()

build() { Navigation(this.stackPath) { Stack() { Button(‘go’) .onClick(() => { this.stackPath.pushPathByName(‘b’, null) }) }.size({ width: ‘100%’, height: ‘100%’ }) .backgroundColor(Color.Black) .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM]) }.systemBarStyle({ statusBarContentColor: ‘#ffffff’ }).navDestination(this.BuilderMap) .hideToolBar(true) .hideTitleBar(true) }

@Builder BuilderMap(name: string) { if (name == ‘b’) { PageB() } } }

@ComponentV2 struct PageB { build() { NavDestination() { Button(‘back’) }.systemBarStyle({ statusBarContentColor: ‘#000000’ }) } }

cke_228.pngcke_411.png

在HarmonyOS(鸿蒙)系统中,要动态变更状态栏颜色,可以通过操作系统的UI框架提供的接口来实现。具体步骤如下:

  1. 获取Window对象:首先,需要通过当前Activity或Ability获取到Window对象。

  2. 设置状态栏颜色:使用Window对象提供的API来设置状态栏颜色。在鸿蒙系统中,可以通过设置Window的Flags以及使用特定的方法(如setWindowAttributes等,具体API名称可能有所不同)来动态更改状态栏颜色。

  3. 颜色值:颜色值需要使用ARGB或RGB格式,并通过Color类进行封装,或者直接使用颜色资源ID。

  4. 应用更改:在更改完状态栏颜色后,需要确保更改被应用,通常这可以通过调用Window的invalidate()或类似方法来触发重绘。

示例代码(伪代码,实际API可能有所不同):

Window window = getCurrentWindow();
int color = Color.parseColor("#FF0000"); // 红色,示例颜色
window.setStatusBarColor(color); // 假设鸿蒙有此类方法
window.invalidate(); // 触发重绘

注意,上述代码为伪代码,具体实现需参考鸿蒙系统的官方文档和API。

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

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!