HarmonyOS 全屏模态跳转后 组件侵占了状态栏安全区域

全屏模态跳转后 组件侵占了状态栏安全区域,如何配置为正常布局,让组件在状态栏下面显示

HarmonyOS  全屏模态跳转后 组件侵占了状态栏安全区域 -鸿蒙开发者社区

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

getWindowAvoidArea可以获取获取安全区域高度;如系统栏区域、刘海屏区域、手势区域、软键盘区域等与窗口内容重叠时,需要窗口内容避让的区域。

参考地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#getwindowavoidarea9

参考demo:

windowStage.loadContent('pages/Index', (err, data) => {
  if (err.code) {
    hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
    return;
  }
  let windowClass: window.Window = windowStage.getMainWindowSync(); // 获取应用主窗口
  let topAvoidArea = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)
  let bottomAvoidArea = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR)
  let bottomRectHeight = px2vp(bottomAvoidArea.bottomRect.height)
  let topRectHeight = px2vp(topAvoidArea.topRect.height)
  AppStorage.setOrCreate('bottomRectHeight',bottomRectHeight)
  AppStorage.setOrCreate('topRectHeight',topRectHeight)
  let isLayoutFullScreen = true;
  windowClass.setWindowLayoutFullScreen(isLayoutFullScreen)
    .then(() => {
      console.info('Succeeded in setting the window layout to full-screen mode.');
    })
    .catch((err: BusinessError) => {
      console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err));
    });
  hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
});

需要在WindowStageCreate生命周期中的loadContent之后获取;获取到的是高度单位是vp

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 安全区域问题
54浏览 • 1回复 待解决
HarmonyOS 安全区域失效
24浏览 • 1回复 待解决
HarmonyOS 安全区域出错
3浏览 • 1回复 待解决
HarmonyOS scroll安全区域问题
53浏览 • 1回复 待解决
HarmonyOS 设置安全区域不生效
21浏览 • 1回复 待解决
关于屏幕安全区域的问题咨询
349浏览 • 1回复 待解决