2012-03-13 5 views
5

Я работаю на мягкой клавиатуре Android и задаюсь вопросом, есть ли способ, чтобы клавиатура могла получить текущую позицию курсора? В настоящее время я использую следующий код:Получить позицию курсора Android Keyboard

connection.getTextBeforeCursor(Integer.MAX_VALUE, 0).length() 

Однако это очень медленно (даже для небольшого количества текста, это может занять до 50 мс - работает на Galaxy Nexus, так что это, вероятно, будет даже медленнее для нижних телефонов). Я также тестировал его на Droid Incredible, и отставание еще более серьезное.

В функции onUpdateSelection вам предоставляется новая позиция курсора. Однако эта функция не всегда вызывается, и поэтому сохранение предоставленного ею значения для будущего использования не является надежным.

Поскольку вы можете установить позицию курсора и получить выделенный текст (но не позицию выбранного текста), не должна ли быть функция, чтобы получить позицию курсора?

Спасибо за помощь!

ответ

4

Это старый вопрос, но я столкнулся с той же проблемой в последнее время. Чтобы получить позицию курсора:

InputConnection ic = getCurrentInputConnection(); 
ExtractedText et = ic.getExtractedText(new ExtractedTextRequest(), 0); 
int selectionStart = et.selectionStart; 
int selectionEnd = et.selectionEnd; 
+0

Похоже, что он работает над выбранным текстом. Кажется, что вопросы касаются только обычного курсора в тексте без выбора. Работает ли этот код в этом случае? –

+0

Да, в этом случае selectStart и selectionEnd равны. –