鸿蒙Next如何获取顶部高度

在鸿蒙Next开发中,如何获取应用窗口的顶部状态栏高度?目前尝试通过WindowManager获取但返回值为0,是否有其他API或方法能准确获取该数值?需要适配不同设备的屏幕尺寸。

2 回复

鸿蒙Next获取顶部高度?简单!用getWindowAvoidArea(),避开刘海和状态栏。代码示例:

import window from '@ohos.window';
let avoidArea = window.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM);
let topHeight = avoidArea.topRect.height;

搞定!顶部高度到手,刘海再见👋

更多关于鸿蒙Next如何获取顶部高度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,获取顶部高度(如状态栏高度)可以通过以下方法实现:

  1. 使用getTop()方法
    如果是获取某个组件的顶部位置,可以直接调用组件的getTop()方法。

  2. 获取状态栏高度
    状态栏高度可以通过系统能力WindowManager获取。

示例代码如下(ArkTS):

import { window } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';

// 获取窗口实例
let windowClass: window.Window | null = null;
try {
  windowClass = window.getLastWindow(this.context);
} catch (error) {
  let err: BusinessError = error as BusinessError;
  console.error('Failed to get window. Code: ' + err.code + ', message: ' + err.message);
}

// 获取状态栏高度
if (windowClass) {
  let topHeight: number = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM).topRect.height;
  console.log('Top height (status bar): ' + topHeight);
}

说明

  • 需要导入@kit.ArkUI@kit.BasicServicesKit模块。
  • getWindowAvoidArea方法返回系统避让区域信息,TYPE_SYSTEM对应状态栏区域。
  • 获取的高度单位为像素(px)。

如果是要获取应用窗口顶部到屏幕顶部的距离,也可以使用windowClass.getWindowProperties().windowRect.top

根据实际需求选择合适的方法。

回到顶部