Android: InputConnection отсутствует метод getSelection()
Почему у меня есть setSelection
в InputConnection
, но не getSelection()
?
Должен ли я просто сделать getTextBeforeCursor(VERY_HIGH_NUMBER, 0)
и рассчитать .length()
этой строки?
2 ответа
Существует InputMethodService.onUpdateSelection (int oldSelStart, int oldSelEnd, int newSelStart, int newSelEnd, int андидаты Start, int candidEnd), который выполняет эту задачу.
Я согласен, это глупо, что getSelection()
не существует Ваше решение работает нормально, но вы должны предположить, что есть только курсор, а не весь выбранный диапазон текста. Я еще не понял, как заполнить эту дыру.
РЕДАКТИРОВАТЬ: О, конечно:
int selStart = ic.getTextBeforeCursor(HIGH_NUMBER, 0).length();
String sel = ic.getSelectedText();
int selEnd = selStart + (sel==null? 0: sel.length());
У меня была такая проблема. Я хотел реорганизовать ссылки на моиEditText
и использовать InputConnection
только. Чтобы начать и закончить выделение, я использовалgetExtractedText(…)
метод так:
private static final ExtractedTextRequest request = new ExtractedTextRequest();
private InputConnection ic;
// …
ExtractedText extractedText = ic.getExtractedText(request, 0);
int start = extractedText.selectionStart;
int end = extractedText.selectionEnd;