HarmonyOS 图片放大时会预留下面导航栏的边界范围,导致显示不全需要滑动,怎么控制占全屏显示?

图片放大时会预留下面导航栏的边界范围,导致显示不全需要滑动,怎么控制占全屏显示(如果手动设置fullwindows,再次缩小需要关闭这个属性,会抖动)

阅读 561
1 个回答
import { window } from '@kit.ArkUI';

@Component
export struct ViewA {
  @Link isShow: boolean;
  private window?: window.Window;

  aboutToAppear(): void {
    /*通过setWindowLayoutFullScreen(true),当前页面的确可以全屏显示;
    但是关闭当前页面,设置setWindowLayoutFullScreen(false)后,上一个页面状态栏出现的时候有跳动,这个有什么好的方式解决?
    或者是否还有其他方式,可以设置全屏展示的呢?
    */
    window.getLastWindow(getContext(this)).then((win) => {
      this.window = win;
      this.window.setWindowLayoutFullScreen(true);
    })
  }

  build() {
    Column() {
      Scroll() {
        Image($r('app.media.111'))
          .objectFit(ImageFit.Auto)
          .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])
      }
      .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])
    }
    .onClick(() => {
      this.window?.setWindowLayoutFullScreen(false, () => {
        this.isShow = false;
      })
    })
    .backgroundColor(Color.Black)
    .width('100%')
    .height('100%')
    .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])
  }
}

请参考上面代码适配,之前会闪一下原因是因为生命周期不能保证调用时序,所以是先消失图片在设置非全屏状态,导致出现的闪动问题后续可以通过DismissContentCoverAction接口禁用全模态转场的返回手势就能保证在自己写逻辑的时候先取消窗口全屏在退出预览图片页面

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进