在HarmonyOS Next中,要实现PC窗口隐藏顶部状态栏(通常指窗口的标题栏和控制按钮),需要通过配置窗口的样式属性来完成。这属于窗口能力定制的一部分。
核心方法是使用Window模块的setWindowSystemBarEnable和setWindowLayoutFullScreen等接口,来控制系统栏(状态栏、导航栏)的显示,并结合窗口标志位实现无标题栏的沉浸式窗口。
以下是关键步骤和代码示例:
-
获取窗口对象并设置沉浸式布局:
在UIAbility的onWindowStageCreate生命周期中,获取当前窗口并设置全屏布局模式,这为隐藏系统栏奠定了基础。
import { window } from '[@kit](/user/kit).WindowKit';
import { UIAbility } from '[@kit](/user/kit).AbilityKit';
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage: window.WindowStage) {
// 获取主窗口
let mainWindow = await windowStage.getMainWindow();
// 设置窗口布局为全屏模式,这是隐藏系统栏的前提之一
mainWindow.setWindowLayoutFullScreen(true);
}
}
-
禁用系统栏:
使用setWindowSystemBarEnable方法,传入一个空数组来禁用所有系统栏(包括顶部的状态栏)。
// 禁用状态栏和导航栏
mainWindow.setWindowSystemBarEnable([]);
这个方法直接控制了系统栏的显示与否。传入[]表示不显示任何系统栏。
-
设置窗口标志位以隐藏标题栏:
为了隐藏窗口顶部的标题栏(包含最小化、最大化、关闭按钮),需要设置窗口的标志位WindowType.TYPE_FLOAT,并配置其属性。TYPE_FLOAT类型的窗口默认无标题栏,更适合自定义界面。
import { window } from '[@kit](/user/kit).WindowKit';
// 设置窗口类型为浮动窗口(通常无标准标题栏)
let config: window.Configuration = {
windowType: window.WindowType.TYPE_FLOAT, // 浮动窗口类型
// 可以进一步配置其他属性,如尺寸
};
mainWindow.setWindowConfiguration(config);
注意:TYPE_FLOAT窗口的行为可能与默认窗口不同,请根据应用场景选择。如果需要保留窗口装饰但隐藏按钮,目前HarmonyOS Next的窗口管理更倾向于全沉浸式或自定义标题栏方案。
-
完整示例:
综合以上步骤,在UIAbility中实现一个无状态栏、无标题栏控件的窗口。
import { window } from '[@kit](/user/kit).WindowKit';
import { UIAbility } from '[@kit](/user/kit).AbilityKit';
export default class EntryAbility extends UIAbility {
async onWindowStageCreate(windowStage: window.WindowStage) {
let mainWindow = await windowStage.getMainWindow();
// 1. 设置为全屏布局模式
mainWindow.setWindowLayoutFullScreen(true);
// 2. 禁用所有系统栏(状态栏、导航栏)
mainWindow.setWindowSystemBarEnable([]);
// 3. 配置为浮动窗口类型以移除标准标题栏
let config: window.Configuration = {
windowType: window.WindowType.TYPE_FLOAT
};
mainWindow.setWindowConfiguration(config);
// 加载页面内容
windowStage.loadContent('pages/Index');
}
}
重要说明:
- 隐藏顶部状态栏和标题栏控件后,窗口将失去系统提供的拖拽移动、最小化、关闭等标准交互。你需要在应用界面内自行实现这些功能(例如,在应用内添加自定义的标题栏和关闭按钮)。
- 窗口类型
WindowType.TYPE_FLOAT可能不适用于所有应用场景,请根据应用的设计需求(如是否需要模态行为、是否允许调整大小等)进行选择。
- 这些API属于系统级窗口管理,请确保在
module.json5中申请必要的权限(如ohos.permission.SYSTEM_FLOAT_WINDOW,如果使用浮动窗口),并遵循HarmonyOS的应用设计规范。
通过以上代码配置,你的应用窗口即可实现类似“花瓣地图”的隐藏顶部状态栏效果。