鸿蒙 - 键盘避让和键盘高度

6 阅读1分钟
aboutToAppear(): void {
  this.getUIContext().setKeyboardAvoidMode(KeyboardAvoidMode.RESIZE); // 压缩模式
  // 获取屏幕高
  let pageHeight = px2vp(display.getDefaultDisplaySync().height)
  this.sheetHeight = pageHeight - 200
  let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
  window.getLastWindow(context)
    .then((currentWidow) => {
      let avoidArea = currentWidow.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM)
      currentWidow.on('avoidAreaChange', data => {
        if (data.type != window.AvoidAreaType.TYPE_KEYBOARD) {
          return
        }
        this.keboardHeight = px2vp(data.area.bottomRect.height) // 键盘高度
      })
    })
}

bindSheet 的简单例子

.bindSheet($$this.isShow, this.myBuilder(), { // 弹层
  height: this.sheetHeight,
  backgroundColor: Color.White,
  maskColor: $r('app.color.gary55'),
  showClose:false,
  mode:SheetMode.EMBEDDED, // 不挡住后面push的新页面
  onWillDismiss:() => {
    this.closePopView()
  },
  onWillSpringBackWhenDismiss:() => {
    this.closePopView()
  }
})