HarmonyOS 鸿蒙Next PC上窗口化显示怎么隐藏顶部状态栏

HarmonyOS 鸿蒙Next PC上窗口化显示怎么隐藏顶部状态栏 在对画面大小同窗口大小比例适配的过程中遇到了点问题,其中对于画面比例计算上遇到的问题同顶部状态栏相关。在观察参考了一些原生应用——“华为视频”、“花瓣地图”,我发现是可以实现隐藏顶部状态栏的需求的,不过在进行相关讯息的检索后,我还是不清楚这个从代码上应该怎么实现,社区的各位大佬不知道能否教教小弟。

想要达成的效果:下图顶部的状态栏能和原生地图一样隐藏显示。因为应用内菜单页面已经存在了“退出”的选项,可以的话右上角的几个选项也隐藏起来。QAQ


更多关于HarmonyOS 鸿蒙Next PC上窗口化显示怎么隐藏顶部状态栏的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

已找到相应实现方法,窗口沉浸式/自由窗口模式,可自行查阅。^_^

更多关于HarmonyOS 鸿蒙Next PC上窗口化显示怎么隐藏顶部状态栏的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢回复,看了一下这个的沉浸式方法应该是适用于手机、平板等设备上的,在PC端窗口模式无法照搬。另外我去重新翻了一下文档,找到了PC相应的实现方式参考。具体链接:https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-window-immersive。在“自由窗口模式”一栏,

阔以的,

在鸿蒙Next中,隐藏PC窗口顶部状态栏需使用ArkTS/ArkUI开发。可通过设置窗口管理器WindowisStatusBarVisible属性为false实现。例如,在onWindowStageCreate生命周期中调用windowClass.setWindowSystemBarEnable(['status'])并传入相应参数来控制其可见性。具体实现依赖@ohos.window模块的API接口。

在HarmonyOS Next中,要实现PC窗口隐藏顶部状态栏(通常指窗口的标题栏和控制按钮),需要通过配置窗口的样式属性来完成。这属于窗口能力定制的一部分。

核心方法是使用Window模块的setWindowSystemBarEnablesetWindowLayoutFullScreen等接口,来控制系统栏(状态栏、导航栏)的显示,并结合窗口标志位实现无标题栏的沉浸式窗口。

以下是关键步骤和代码示例:

  1. 获取窗口对象并设置沉浸式布局: 在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);
      }
    }
    
  2. 禁用系统栏: 使用setWindowSystemBarEnable方法,传入一个空数组来禁用所有系统栏(包括顶部的状态栏)。

    // 禁用状态栏和导航栏
    mainWindow.setWindowSystemBarEnable([]);
    

    这个方法直接控制了系统栏的显示与否。传入[]表示不显示任何系统栏。

  3. 设置窗口标志位以隐藏标题栏: 为了隐藏窗口顶部的标题栏(包含最小化、最大化、关闭按钮),需要设置窗口的标志位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的窗口管理更倾向于全沉浸式或自定义标题栏方案。

  4. 完整示例: 综合以上步骤,在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的应用设计规范。

通过以上代码配置,你的应用窗口即可实现类似“花瓣地图”的隐藏顶部状态栏效果。

回到顶部