HarmonyOS 鸿蒙Next app 底部导航栏高度的问题

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

HarmonyOS 鸿蒙Next app 底部导航栏高度的问题

使用模拟器,通过下面方法拿状态栏和导航栏的高度时,状态栏高度是有的(126px)。但是底部导航栏高度拿到的值是0。想问一下模拟器底部导航栏高度就是0px?还是需要到真机上才会有返回值?

 windowClass.on(“avoidAreaChange”, (data) => {
if (data.type == window.AvoidAreaType.TYPE_SYSTEM) {
// 将状态栏和导航栏的高度保存在AppStorage中
AppStorage.setOrCreate(“topStatusBarHeight”, data.area.topRect.height);
AppStorage.setOrCreate(“bottomNavigationBarHeight”, data.area.bottomRect.height);
}
})<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

app需要进行全面屏开发,需要隐藏app的状态栏和底部导航栏。所以需要拿到对应的高度。

3 回复
获取底部导航条的高度,需要判断data.type === window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR
参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-0000001820880785#ZH-CN_TOPIC_0000001820880785__avoidareatype7
类型入参错了, 应该选导航条区域,手机底部的叫导航条

关于HarmonyOS 鸿蒙Next app底部导航栏高度的问题,以下是一些解决方案:

在HarmonyOS 鸿蒙Next中,底部导航栏高度可以通过编程接口获取。具体地,可以使用window.Window类的getWindowAvoidArea方法,并传入window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR作为参数,来获取底部导航栏的避让区域。然后,通过访问避让区域的bottomRect.height属性,即可获取到底部导航栏的高度(单位为px)。

示例代码如下:

let windowClass = windowStage.getMainWindowSync();
let avoidArea = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR);
let bottomRectHeight = avoidArea.bottomRect.height;
console.log("bottomRectHeight is " + bottomRectHeight);

注意,获取的高度值可能需要根据设备的分辨率和DPI进行转换,以确保在不同设备上的一致性。

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

回到顶部