HarmonyOS 鸿蒙Next 在page页面怎么动态控制是否全屏

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

HarmonyOS 鸿蒙Next 在page页面怎么动态控制是否全屏

正常加载在onWindowStageCreate 是可以通过setWindowLayoutFullScreen 控制是否全屏的。

现在想在page页面控制全屏和不全屏,通过setWindowLayoutFullScreen 这个方法好像不生效。

此方法是在EntryAbility中写的,我是通过emit 进行订阅,然后调用 setWindowLayoutFullScreen 的。目前发现不生效,有什么方案可以在page页面也能够控制全屏和关闭全屏。


更多关于HarmonyOS 鸿蒙Next 在page页面怎么动态控制是否全屏的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

参考如下代码:

setFullScreen(isLayoutFullScreen:boolean){

       window.getLastWindow(getContext(this)).then((win)=>{

         win.setWindowLayoutFullScreen(isLayoutFullScreen).then(()=>{

           console.log("设置成功")

         })

       }).catch((err: BusinessError) => {

        console.log('setWindowOrientation: Failed to obtain the top window. Cause: ' + JSON.stringify(err));

      });

    }

        Button("设置为全屏").onClick(()=>{

             this.setFullScreen(true)

        })

      }.width("100%")

   }

更多关于HarmonyOS 鸿蒙Next 在page页面怎么动态控制是否全屏的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


let widonw = window.findWindow(this.getUIContext().getWindowName())

拿到window后怎么设置都行。但还是全局设置。根据页面的状态设置。然后页面退出的时候,把状态栏再设置回来

在HarmonyOS鸿蒙Next系统中,若想在Page页面动态控制是否全屏,可以通过修改页面的窗口属性来实现。以下是一个大致的实现思路:

  1. 获取WindowController:首先,需要通过Ability或者Page实例获取到WindowController对象。这个对象提供了对窗口属性的控制接口。

  2. 设置全屏属性:使用WindowController提供的API,如setWindowFlags或类似的方法,来设置窗口的全屏属性。通常,这涉及到传递一个标志位来指明是否全屏。

  3. 动态切换:根据业务逻辑,在需要全屏或退出全屏时,调用上述设置方法并传递相应的标志位。

  4. 注意事项:在调用全屏设置时,确保页面已经加载完成,以避免在窗口初始化过程中进行属性设置导致的异常。同时,注意处理可能的异常和回调,以确保设置的成功执行。

示例代码(伪代码):

WindowController windowController = getPage().getWindowController();
if (shouldFullScreen) {
    windowController.setWindowFlags(WindowFlag.FULLSCREEN);
} else {
    windowController.setWindowFlags(WindowFlag.NORMAL);
}

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

回到顶部