请问我的api9的沉浸式状态栏工具类该怎么修改成HarmonyOS 鸿蒙Next api12的

发布于 1周前 作者 songsunli 最后一次编辑是 5天前 来自 鸿蒙OS

请问我的api9的沉浸式状态栏工具类该怎么修改成HarmonyOS 鸿蒙Next api12的

Api9中设置沉浸式状态栏的方法在API12后废弃了

windowStage.getMainWindowSync().setWindowLayoutFullScreen 

我以前的工程中有一个沉浸式状态栏工具类,我现在拿到api12的工程中有很多类型的报错不知道该怎么改

3 回复

还没,换了个方法实现沉浸式了

楼主你好,ArkTS不支持any、undefined和unknown类型。显式指定具体类型。 修改方案: 1)所有变量都应显式指定其具体类型 2)对于字面量,可以使用Record<>搭配as的形式指定类型

HarmonyOS NEXT API12 以前设置全屏状态栏可以使用 windowStage.getMainWindowSync().setWindowLayoutFullScreen,但是这个方法将在API12后废弃,虽然也可以使用,但是我们更推荐下面方法:

参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5 HarmonyOS NEXT API12以后配置沉浸式状态栏的方法



    // 沉浸式状态栏
    let windowClass: window.Window | undefined = undefined;
    windowStage.getMainWindow((err: BusinessError, data) => {
      windowClass=data
      let promise = windowClass.setWindowLayoutFullScreen(true);
      promise.then(() => {
        //设置状态栏透明背景
        windowStage.getMainWindowSync().setWindowSystemBarEnable(['status']).then(() => {
          const systemBarProperties: window.SystemBarProperties = {
            statusBarColor: '#00000000'
          };
          //设置窗口内导航栏、状态栏的属性
          windowStage.getMainWindowSync().setWindowSystemBarProperties(systemBarProperties)
            .then(() => {
              console.info('Succeeded in setting the system bar properties.');
            }).catch((err:object) => {
            console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(err));
          });
        })
      }).catch((err: BusinessError) => {
        console.error(`Failed to set the window layout to full-screen mode. Cause code: ${err.code}, message: ${err.message}`);
      });
    })
回到顶部