HarmonyOS鸿蒙Next中如何判断键盘是否正在显示中?

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

HarmonyOS鸿蒙Next中如何判断键盘是否正在显示中? 如何判断键盘是否正在显示中?

3 回复

可使用window.on(‘keyboardHeightChange’)监听键盘高度,判断软键盘的显示与隐藏

文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#ZH-CN_TOPIC_0000001893370021__onkeyboardheightchange7

window.on('avoidAreaChange', async data => {
  if (data.type !== window.AvoidAreaType.TYPE_KEYBOARD) {
    return;
  }
  this.screenHeight1 = px2vp(data.area.bottomRect.height);
  console.log(this.screenHeight1 + 'foo xxx') //控制台输出可以看到键盘的高度
})

//方式2:直接获取软键盘高度
window.on('keyboardHeightChange', data => {
  console.log("foo data " + px2vp(data)) //控制台输出可以看到键盘的高度
})

参考

import { router } from '@kit.ArkUI'

@Entry
@Component
struct Index {
  @State text: string = ''
  controller: TextInputController = new TextInputController()

  build() {
    Column() {
      Button('click').onClick(() =>{
        router.pushUrl({url:'pages/Page2'})
      })
    }
    .width('100%')
    .height('100%')
    .padding(20)
    .onClick(() =>{
      this.controller.stopEditing()
    })
  }
}

// Page2.ets

@Entry
@Component
struct Page2 {
  @State text: string = ''
  controller: TextInputController = new TextInputController()

  build() {
    Column() {
      TextInput({
        placeholder: 'input ...',
        controller: this.controller
      })
      .width(380)
      .height(60)
      .defaultFocus(false)
      .onChange((value: string) =>{
        this.text = value
      })
    }
    .width('100%')
    .height('100%')
    .padding(20)
    .onClick(() =>{
      this.controller.stopEditing()
    })
  }
}

更多关于HarmonyOS鸿蒙Next中如何判断键盘是否正在显示中?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,可以通过InputMethodManager类来判断键盘是否正在显示。具体步骤如下:

  1. 获取InputMethodManager实例:

    let inputMethodManager = getContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager;
  2. 使用isActive方法判断键盘是否处于激活状态:

    let isKeyboardShowing = inputMethodManager.isActive();
  3. 如果isKeyboardShowingtrue,则表示键盘正在显示;如果为false,则表示键盘没有显示。

注意:InputMethodManager类的使用需要在EntryAbility或相关组件的上下文中进行。

以上方法可以帮助你判断键盘在鸿蒙Next中的显示状态。

在HarmonyOS鸿蒙Next中,可以通过监听WindowonWindowFocusChange事件来判断键盘是否正在显示。当键盘弹出时,窗口的布局会发生变化,焦点事件会被触发。你可以在onWindowFocusChange回调中判断窗口高度是否发生变化,从而确定键盘的显示状态。例如:

@Override
public void onWindowFocusChange(boolean hasFocus) {
    if (hasFocus) {
        // 键盘可能显示
    } else {
        // 键盘可能隐藏
    }
}

结合WindowManagergetWindowVisibleDisplayFrame方法,可以进一步精确判断键盘的显示状态。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!