HarmonyOS鸿蒙Next中弹窗从底部弹出如何不避让导航栏并占满底部

HarmonyOS鸿蒙Next中弹窗从底部弹出如何不避让导航栏并占满底部

使用customDiag 弹窗,点击按钮从底部弹出,希望占满底部包含导航栏,实际会避让导航栏; 使用expandSafeArea扩展安全区域不生效; 如果指定弹窗向下偏移导航栏的高度,将应用屏幕缩小拖至屏幕中间,会出现弹窗往下偏移的问题;

3 回复

将参数customStyle 设置为true就可以了。

更多关于HarmonyOS鸿蒙Next中弹窗从底部弹出如何不避让导航栏并占满底部的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,若要使弹窗从底部弹出时不避让导航栏并占满底部,可以使用WindowManagerLayoutParams设置FLAG_LAYOUT_NO_LIMITS标志。通过WindowManager获取当前窗口的LayoutParams,并设置FLAG_LAYOUT_NO_LIMITS,使弹窗布局不受系统导航栏限制。同时,确保弹窗的布局高度设置为MATCH_PARENT,以占满底部空间。

在HarmonyOS Next中,要实现弹窗从底部弹出且不避让导航栏并占满底部,可以通过以下方式解决:

  1. 使用windowClass属性设置弹窗窗口样式:
customDialogController.open({
  windowStyle: {
    windowType: WindowType.FLOAT,
    windowLayoutFullScreen: true,
    windowTransparent: true
  }
})
  1. 在弹窗组件样式中添加:
.dialog-container {
  position: absolute;
  bottom: 0;
  width: 100%;
  height: 100%;
  background-color: transparent;
}
  1. 确保弹窗内容容器设置为:
Column() {
  // 弹窗内容
}
.width('100%')
.height('100%')
.backgroundColor(Color.White)
.alignItems(HorizontalAlign.Start)
  1. 如果仍有避让问题,可以尝试在弹窗打开时强制设置窗口属性:
import window from '@ohos.window';

// 获取当前窗口并设置布局模式
let windowClass = await window.getLastWindow(this.context);
windowClass.setWindowLayoutFullScreen(true);
windowClass.setWindowSystemBarEnable(['navigation']);

这种方法可以确保弹窗覆盖整个屏幕底部区域,包括导航栏位置。注意测试不同设备上的显示效果,可能需要根据具体设备调整布局参数。

回到顶部