Android : 如何防止硬键盘输入时隐藏软键盘
Android : How to prevent softkeyboard hidden when hardwarekeyboard input
我创建了 EditText
并将其应用于 InputMethodManager
的 showSoftInput
。
当我输入物理键时,键盘自动隐藏
我想防止键盘自动隐藏。
下面的方法我试过了。
1. 使用 showSoftInput Flag ImputMethodManager.SHOW_IMPLICIT
, SHOW_FORCED
2.在EditText中使用InputConnectionWrapper
,字符串和数字正常工作。但是 ctrl、Tab、Alt、F1、F2。输入一个键隐藏键盘。
我希望输入物理键时键盘不会被隐藏。
感谢阅读。
一个好的选择是当有来自硬件键盘的输入时关闭软键盘
Android classes通常会提供事件处理器,你可以在subclassing时实现。 Activity
class 具有以下事件处理程序:
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)
我想还有许多其他 class 具有类似的关键事件事件处理程序,但这应该足以满足您的情况。 KeyEvent 然后包含有关按下的键的信息,即键码。
在你的情况下你可能想做这样的事情:
在你 activity
或 view
class 覆盖 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
}
}
如何关闭软关键字:
fun hideSoftKeyboard() {
try {
val inputMethodManager = getSystemService(
Activity.INPUT_METHOD_SERVICE
) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(
currentFocus!!.windowToken, 0)
} catch (e: Exception) {}
}
我创建了 EditText
并将其应用于 InputMethodManager
的 showSoftInput
。
当我输入物理键时,键盘自动隐藏
我想防止键盘自动隐藏。
下面的方法我试过了。
1. 使用 showSoftInput Flag ImputMethodManager.SHOW_IMPLICIT
, SHOW_FORCED
2.在EditText中使用InputConnectionWrapper
,字符串和数字正常工作。但是 ctrl、Tab、Alt、F1、F2。输入一个键隐藏键盘。
我希望输入物理键时键盘不会被隐藏。 感谢阅读。
一个好的选择是当有来自硬件键盘的输入时关闭软键盘
Android classes通常会提供事件处理器,你可以在subclassing时实现。 Activity
class 具有以下事件处理程序:
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)
我想还有许多其他 class 具有类似的关键事件事件处理程序,但这应该足以满足您的情况。 KeyEvent 然后包含有关按下的键的信息,即键码。
在你的情况下你可能想做这样的事情:
在你 activity
或 view
class 覆盖 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
}
}
如何关闭软关键字:
fun hideSoftKeyboard() {
try {
val inputMethodManager = getSystemService(
Activity.INPUT_METHOD_SERVICE
) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(
currentFocus!!.windowToken, 0)
} catch (e: Exception) {}
}