HarmonyOS 鸿蒙Next ArkUI 状态栏沉浸效果实现 | 获取状态栏高度

HarmonyOS 鸿蒙Next ArkUI 状态栏沉浸效果实现 | 获取状态栏高度 API版本:8

效果类似如下

C1C4436DD5B8A69AC69D98D8C533292F.jpg

// 设置应用窗口沉浸模式
window.getTopWindow((err, mainWindowClass) => {
  if (err) {
    console.error('Failed to get the subWindow. Cause: ' + JSON.stringify(err))
    return
  }
  // 将UI内容顶入状态栏下方
  mainWindowClass.setLayoutFullScreen(true, (e, data) => {
    // 设置状态栏透明背景
    let SystemBarProperties = {
      statusBarColor: '#00000000'
    }
    //设置窗口内导航栏、状态栏的属性,使用callback异步回调。
    mainWindowClass.setSystemBarProperties(SystemBarProperties, (err) => {
      if (err) {
        console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(err))
        return
      }
      console.info('Succeeded in setting the system bar properties.')
      mainWindowClass.getAvoidArea(window.AvoidAreaType.TYPE_SYSTEM, (err, data) => {
        if (err) {
          console.error('Failed to obtain the area. Cause:' + JSON.stringify(err));
          return;
        }
        this.topmargin = data.topRect.height
        // 保存高度信息
        Context.set('systemBarHeight', this.topmargin)
        console.info('Succeeded in obtaining the area. Data:' + JSON.stringify(data));
      })
    })
  })
})

其中getVoidArea方法返回的结果如下:

{
  "bottomRect": {
    "height": 0,
    "left": 0,
    "top": 0,
    "width": 0
  },
  "leftRect": {
    "height": 0,
    "left": 0,
    "top": 0,
    "width": 0
  },
  "rightRect": {
    "height": 0,
    "left": 0,
    "top": 0,
    "width": 0
  },
  "topRect": {
    "height": 126,
    "left": 0,
    "top": 0,
    "width": 0
  }
}

再在布局中使用状态栏高度信息即可实现沉浸效果

cke_52832.png


更多关于HarmonyOS 鸿蒙Next ArkUI 状态栏沉浸效果实现 | 获取状态栏高度的实战教程也可以访问 https://www.itying.com/category-93-b0.html

14 回复

api9 release什么时候出,等的花都谢了😄

更多关于HarmonyOS 鸿蒙Next ArkUI 状态栏沉浸效果实现 | 获取状态栏高度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


API9 无法获取到状态栏高度!

等一下api9release,上真机验证,

有API9的没?

API9的接口是类似的,你可以查一下API参考,在图形图像的window里面。HarmonyOS的api9还没有release,

State模型下是需要通过真要才可以获取到吗?在预览界面获取失败呢

你这个高度如何存的,我写在app.ets里 index.ets获取不到值

api9 EntryAbility里面就可以获取到,

学习新知识!掌握新技能

在HarmonyOS(鸿蒙)系统中,使用ArkUI(ArkUI是鸿蒙系统的声明式前端框架,支持使用JS/TS或eTS语言进行开发)实现状态栏沉浸效果并获取状态栏高度,可以通过以下方式实现:

实现状态栏沉浸效果

在ArkUI中,要实现状态栏沉浸效果,通常需要将状态栏设置为透明,并让页面内容延伸到状态栏下方。这可以通过设置系统UI的样式来实现。具体方法依赖于你所使用的ArkUI版本和组件库,但一般可以通过修改windowApplication的相关属性来设置。例如,在eTS中,你可能会使用类似systemUI.setStatusBarVisible(false)的方法来隐藏状态栏(注意,具体API可能有所不同,需查阅最新的鸿蒙开发文档)。

获取状态栏高度

获取状态栏高度通常需要使用系统提供的API或属性。在鸿蒙系统中,你可以通过访问系统服务或特定的组件属性来获取状态栏的高度。不过,由于ArkUI的抽象层较高,直接获取状态栏高度的API可能并不直观。一个常见的做法是使用系统提供的UI组件或布局特性来间接获取,或者通过监听系统UI变化事件来获取相关信息。

如果上述方法无法直接解决你的问题,可能是因为鸿蒙系统的API在不断更新和变化。请参考最新的鸿蒙开发文档,或访问鸿蒙开发者社区寻求更具体的帮助。

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

回到顶部