安卓:如何防止软键盘隐藏时,硬件键盘输入



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

我想防止键盘自动隐藏。

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

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

一个好的选择是当硬件键盘输入时关闭软键盘

安卓类通常提供事件处理程序,您可以在对它们进行子类化时实现。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
}
}

如何关闭soft关键字:

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

相关内容

  • 没有找到相关文章

最新更新