Я работаю над проектом, в котором мне нужно получать события клавиатуры из пользовательского представления (не EditText). Чтобы открыть клавиатуру, мы переписали onCreateInputConnection()
метод View и передали BaseInputConnection()
как InputConnection. И InputFilter присоединен к Editable внутри InputConnection.
Все отлично работает в GBoard. Но когда дело касается клавиатуры Samsung Keyboard или Swipe, некоторые функции не работают. Например, события Delete и NewLine не передаются в InputFilter на клавиатуре Samsung. В клавиатуре SwiftKey Delete работает, но NewLine не работает.
onCreateInputConnection()
код
override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection {
outAttrs.inputType =
InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES or InputType.TYPE_TEXT_FLAG_MULTI_LINE
outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI
outAttrs.initialSelStart = 0
outAttrs.initialSelEnd = 0
return BaseInputConnection(this, true)
}
InputFilter
код
inputConnection.editable.filters = arrayOf(InputFilter { source, start, end, dest, dstart, dend ->
null
})
Любая помощь высоко ценится. Спасибо!