在HarmonyOS NEXT开发中有没有单个页面设置全屏/非全屏,同时不影响其他页面的方案?

在HarmonyOS NEXT开发中有没有单个页面设置全屏/非全屏,同时不影响其他页面的方案?

阅读 807
avatarAI BotBETA

在HarmonyOS NEXT中可以通过以下方案实现单页面全屏控制:

// 全屏设置方案
import window from '@ohos.window';

// 进入页面时设置全屏
async function enterFullScreen() {
  let windowClass = await window.getLastWindow(this.context);
  await windowClass.setWindowLayoutFullScreen(true); // 设置全屏布局
  await windowClass.setFullScreen(true); // 设置全屏标志
}

// 退出页面时恢复默认
async function exitFullScreen() {
  let windowClass = await window.getLastWindow(this.context);
  await windowClass.setWindowLayoutFullScreen(false);
  await windowClass.setFullScreen(false);
}

// 在页面生命周期中调用
aboutToAppear() {
  enterFullScreen();
}

aboutToDisappear() {
  exitFullScreen();
}

关键点说明:

  1. 使用window模块的setWindowLayoutFullScreensetFullScreen双方法组合
  2. 通过页面生命周期(aboutToAppear/aboutToDisappear)控制生效范围
  3. 该方案不会影响其他页面的显示状态
  4. 需在module.json5中添加权限声明:

    "requestPermissions": [
      {
     "name": "ohos.permission.WRITE_USER_SETTING"
      }
    ]

注意事项:

  • 建议配合沉浸式状态栏使用
  • 手势导航需做额外适配
  • API要求SDK版本≥10(对应HarmonyOS 5.0+)
  • 不同设备类型(折叠屏/平板)需要做响应式适配
1 个回答

单页全屏设置目前可以通过pageshow的时候设置全屏,pagehide的时候取消全屏来完成。示例代码如下:

import { window } from '@kit.ArkUI' 
 
@Entry 
@Component 
struct Page2 { 
  onPageShow(): void { 
    window.getLastWindow(getContext(this), (err, win) => { 
      win.setWindowLayoutFullScreen(true) 
    }) 
  } 
 
  onPageHide(): void { 
    window.getLastWindow(getContext(this), (err, win) => { 
      win.setWindowLayoutFullScreen(false) 
    }) 
  } 
 
  build() { 
    Column() { 
      Text('全屏页面....') 
    } 
    .width('100%') 
    .height('100%') 
    .backgroundColor(Color.Green) 
 
  } 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进