我创建了EditText
并将其应用于InputMethodManager
的showSoftInput
。当我输入一个物理键时,键盘会自动隐藏。
我想防止键盘自动隐藏。
我试过下面的方法。1.使用showSoftInput标志ImputMethodManager.SHOW_IMPLICIT
、SHOW_FORCED
2.在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随后包含有关按下的按键的信息,即按键代码。
如果您想这样做:
在activity
或view
类中重写onKeyDown
或onKeyUp
方法和将软键盘隐藏在那里,如:
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) {}
}