хороший вариант - просто закрыть экранную клавиатуру при наличии ввода с аппаратной клавиатуры
Классы 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
или 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
}
}
как закрыть softKeyword:
fun hideSoftKeyboard() {
try {
val inputMethodManager = getSystemService(
Activity.INPUT_METHOD_SERVICE
) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(
currentFocus!!.windowToken, 0)
} catch (e: Exception) {}
}