一个好的选择是在有来自硬件键盘的输入时关闭软键盘
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然后包含有关按下的键的信息,即键码。
在你的情况下,你可能想做这样的事情:
在您activity
或view
类中覆盖onKeyDown
oronKeyUp
方法并在其中隐藏软键盘,例如:
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) {}
}