HarmonyOS鸿蒙Next中当应用运行在“分栏模式”后,屏幕右边会出现图标,我用windowSizeChange获取得宽度也是屏幕得一半,怎么样可以把屏幕占满

HarmonyOS鸿蒙Next中当应用运行在“分栏模式”后,屏幕右边会出现图标,我用windowSizeChange获取得宽度也是屏幕得一半,怎么样可以把屏幕占满 当应用运行在 “分栏模式”后,屏幕右边会出现图标,我用windowSizeChange获取得宽度也是屏幕得一半,怎么样可以把屏

4 回复

开发者你好,

请问下开发者问题描述中的“应用运行在分栏模式后,屏幕右边会出现图标”是指在系统设备-显示和亮度-应用显示比例 中将应用的显示比例修改为分栏吗?还是指使用的Navigation的分栏模式,在分栏状态下无法正常获取屏幕尺寸?这边使用DevEco Studio 6.0.2 Release版本和6.0.0.130版本的设备运行Navigation的单栏与分栏模式切换示例在横竖屏切换下都可以正常获取屏幕的尺寸,方便的话可以再详细描述下您的场景提供DevEco Studio版本、设备版本信息以及您的demo以便复现问题进一步分析吗?

更多关于HarmonyOS鸿蒙Next中当应用运行在“分栏模式”后,屏幕右边会出现图标,我用windowSizeChange获取得宽度也是屏幕得一半,怎么样可以把屏幕占满的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主的分栏模式是指平板设置里的显示和亮度中应用显示比例的分栏模式?

在鸿蒙Next分栏模式下,应用默认显示一半屏幕。要占满全屏,需在module.json5中配置maxWindowRatio为1.0,并设置minWindowRatio为1.0。同时,在onWindowStageCreate生命周期中,使用window.getProperties().windowRect获取窗口矩形,并通过window.setWindowRect()方法设置窗口尺寸为全屏。注意,此操作需在分栏模式触发后执行。

在HarmonyOS Next中,应用运行在“分栏模式”(即平行视界)时,默认会与另一个应用或系统界面分屏显示,因此获取到的窗口宽度通常是屏幕的一半。这是分栏模式的标准行为。

若要让您的应用在分栏模式下尝试占据更多空间或实现全屏效果,核心思路是申请更大的窗口,但这通常受系统多任务策略限制,无法真正独占半边屏幕(因为另一栏必须显示内容)。您可以尝试以下方法:

  1. 使用全屏窗口模式:在UIAbility的onWindowStageCreate生命周期中,通过window对象尝试设置全屏或更大的窗口。但请注意,在分栏模式下,系统可能不会完全批准该请求。

    import window from '@ohos.window';
    
    onWindowStageCreate(windowStage: window.WindowStage) {
        // 获取窗口对象
        let mainWindow = windowStage.getMainWindow();
        // 尝试设置全屏布局(实际效果由系统决定)
        mainWindow.setWindowLayoutFullScreen(true, (err) => {
            if (err) {
                // 处理错误,分栏模式下可能不支持
                console.error('Failed to set full screen. Code: ' + err.code);
            }
        });
    }
    
  2. 检查并利用窗口模式:通过window模块的getWindowMode()方法获取当前窗口模式,并针对WINDOW_MODE_SPLIT_PRIMARY(主分屏)或WINDOW_MODE_SPLIT_SECONDARY(次分屏)进行自适应布局。虽然无法改变分栏宽度,但可以优化内容布局以更好地利用空间。

  3. 调整内容布局,而非窗口:更实际的做法是接受分栏的宽度限制,在windowSizeChange回调中动态调整应用内部UI的布局。例如,将原本平铺的内容改为可滚动或折叠,以适配较窄的宽度,从而在视觉上更充分利用空间。

重要限制:分栏模式是系统级多任务功能,应用无法强制改变分栏比例或完全覆盖另一栏。右边出现的图标可能是系统分栏控制器,应用无法隐藏。因此,建议优先采用第3种方法,做好分屏适配。

回到顶部