Я делаю пользовательскую клавиатуру и должен установить написание текста перед его фиксацией. Это описано в этих вопросах и ответах а>.
Я знаю, как коммитить текст в целом
inputConnection.commitText("text", 1);
Но я не знаю, как это сделать, если пользователь изменит положение курсора, коснувшись другой части EditText
. Наблюдая за другими клавиатурами, я знаю, что это возможно, потому что они это делают. Но на моей клавиатуре, если у меня есть
inputConnection.setComposingText("text", 1);
а затем измените положение курсора, составляющий диапазон останется. Любые будущие изменения заменят составной диапазон, а не будут введены в новую позицию курсора.
Сообщение Прослушиватель Android EditText для изменения положения курсора дает некоторые идеи о том, что вы могли бы сделать с EditText
, но внутри пользовательской клавиатуры у меня нет доступа к EditText
, кроме того, что дает мне InputConnection
.
Как я могу узнать, когда курсор/выделение переместилось?
Я продолжаю находить ответ на свой вопрос после того, как начал его писать. Я опубликую ответ ниже.