How can I handle the event of pressing back key while typing on an EditText? When the virtual keyboard is shown and the user presses back, it gets hidden. I want to handle t
Non of the other answers were working for me in SearchView, I've finally end up with overriding dispatchKeyEventPreIme(...) method in my custom view:
class ImeAwareSearchView @JvmOverloads constructor(
context: Context?,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : SearchView(context, attrs, defStyleAttr) {
var onKeyEventPreImeListener: OnKeyEventPreImeListener? = null
override fun dispatchKeyEventPreIme(event: KeyEvent?): Boolean {
onKeyEventPreImeListener?.onPreImeKeyEvent()
return false
}
}
The listener looks like this:
interface OnKeyEventPreImeListener {
fun onPreImeKeyEvent()
}
And I'm setting it in Fragment to hide my search row:
search_input.onKeyEventPreImeListener = object: OnKeyEventPreImeListener {
override fun onPreImeKeyEvent() {
hideSearchRow()
}
}
Note that dispatchKeyEventPreIme(...) method is called twice, so make sure you don't do your staff on event twice as well.