Рішення Котліна
Прямий спосіб обробки клавіатури приховати + виконати дії в Котліні:
// Set action
edittext.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
// Hide Keyboard
val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
true
}
false
}
Розширення Kotlin
Використовуйте це, щоб зателефонувати edittext.onDone {/*action*/}
у свій основний код. Зберігає її легше для читання та ремонтування
edittext.onDone { edittext.hideKeyboard() }
fun View.hideKeyboard() {
val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}
fun EditText.onDone(callback: () -> Unit) {
// These lines optional if you don't want to set in Xml
imeOptions = EditorInfo.IME_ACTION_DONE
maxLines = 1
setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
callback.invoke()
true
}
false
}
}
Додаткові розширення клавіатури
Якщо ви хочете більше способів спростити роботу з клавіатурою (показати, закрити, фокусувати): Прочитайте цю публікацію
Не забудьте додати ці параметри до Xml редакційного тексту, якщо не в коді
<EditText ...
android:imeOptions="actionDone"
android:inputType="text"/>
Вам потрібна inputType="textMultiLine"
підтримка? Прочитайте цю публікацію і не додайте imeOptions
і не inputType
в Xml