【问题标题】:Android : How to prevent softkeyboard hidden when hardwarekeyboard inputAndroid:硬件键盘输入时如何防止软键盘隐藏
【发布时间】:2019-06-17 22:40:09
【问题描述】:

我创建了EditText 并将其应用于InputMethodManagershowSoftInput。 当我输入物理键时,键盘会自动隐藏。

我想防止键盘自动被隐藏。

我试过下面的方法。 1.使用showSoftInput标志ImputMethodManager.SHOW_IMPLICIT,SHOW_FORCED 2.在EditText中使用InputConnectionWrapper,字符串和数字正常工作。但是 ctrl、Tab、Alt、F1、F2。输入一个键会隐藏键盘。

我希望输入物理键时不会隐藏键盘。 感谢您的阅读。

【问题讨论】:

标签: android android-softkeyboard android-input-method android-hardware-keyboard inputmethodmanager


【解决方案1】:

一个不错的选择是在有来自硬件键盘的输入时关闭软键盘

Android 类通常提供事件处理程序,您可以在子类化它们时实现。 Activity 类具有以下事件处理程序:

  • onKeyDown(int keyCode, KeyEvent event)
  • onKeyLongPress(int keyCode, KeyEvent event)
  • onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
  • onKeyShortcut(int keyCode, KeyEvent event)
  • onKeyUp(int keyCode, KeyEvent event)

此外,所有视图都有以下事件处理程序:

  • onKeyDown(int, KeyEvent)
  • onKeyUp(int, KeyEvent)

我猜还有许多其他类对关键事件具有类似的事件处理程序,但这对于您的情况应该足够了。 KeyEvent 然后包含有关按下的键的信息,即键码。

在你的情况下,你可能想做这样的事情:

activityview 类中覆盖 onKeyDownonKeyUp 方法和 将软键盘隐藏在那里,例如:

override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
        hideSoftKeyboard()
        return super.onKeyUp(keyCode, event)
}

或者您可以为您的编辑文本添加keyListener

mEditText.setOnKeyListener { v, keyCode, event ->
       hideSoftKeyboard()
       return@setOnKeyListener when (keyCode) {
           KeyEvent.ACTION_UP -> {
               hideSoftKeyboard()
               true
           }
           else -> false
       }
}

如何关闭软关键字:

fun hideSoftKeyboard() {
   try {
        val inputMethodManager = getSystemService(
            Activity.INPUT_METHOD_SERVICE
        ) as InputMethodManager
        inputMethodManager.hideSoftInputFromWindow(
            currentFocus!!.windowToken, 0)
    } catch (e: Exception) {}
}    

【讨论】:

  • 我也尝试过阻止关键事件。但是,要更改语言,必须将语言设置作为事件发送。在这种情况下,虚拟键盘是隐藏的。
  • 如果在物理键盘上输入一个键,我想防止虚拟键盘自动被隐藏。相反,我认为只能防止虚拟键盘被隐藏,因为如果中间阻塞事件,则无法运行更改语言等键。
猜你喜欢
  • 2014-04-07
  • 2011-12-22
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 1970-01-01
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多