События удаления и NewLine, не полученные в фильтре ввода Samsung Keyboard - Android - PullRequest
0 голосов
/ 20 апреля 2020

Я работаю над проектом, в котором мне нужно получать события клавиатуры из пользовательского представления (не 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
    })

Любая помощь высоко ценится. Спасибо!

...