2012-03-13 30 views
5

Estoy trabajando en un teclado de Android y me preguntaba, ¿hay alguna manera de que el teclado obtenga la posición actual del cursor? Actualmente estoy usando el siguiente código:Obtener posición de cursor Teclado de Android

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

Sin embargo, esto es muy lento (incluso para una pequeña cantidad de texto, que puede tardar hasta 50 ms - se ejecuta en un Galaxy Nexus, así que esto probablemente sería aún más lento para teléfonos de gama baja). También lo he probado en un Droid Incredible, y el retraso es aún más severo.

En la función onUpdateSelection, se le asigna la nueva posición del cursor. Sin embargo, esta función no siempre se llama y, por lo tanto, almacenar el valor provisto por ella para uso futuro no es confiable.

Dado que puede establecer la posición del cursor y obtener el texto seleccionado (pero no la posición del texto seleccionado), ¿no debería haber una función para obtener la posición del cursor?

¡Gracias por la ayuda!

Respuesta

4

Esta es una pregunta anterior, pero me encontré con el mismo problema recientemente. Para obtener la posición del cursor:

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

Parece que está trabajando en el texto seleccionado. Las preguntas parecen ser solo un cursor normal en el texto sin una selección. ¿Funciona este código en este caso? –

+0

Sí, en ese caso, selectionStart y selectionEnd with be equal. –

Cuestiones relacionadas