2012-03-21 5 views
6

Ahora estoy trabajando en una aplicación de Android. Creé un teclado personalizado con funcionalidades. Estoy usando un texto de edición para mostrar los textos ingresados. El texto de edición puede tener n número de líneas. Ahora mi problema es que tengo un botón de arriba en mi teclado. Así que si hago clic en el botón de arriba, entonces tengo que ir a la misma posición en las líneas anteriores. Pero no pude encontrar el edite el número de línea del texto y la posición del cursor de la línea actual. Por favor, ayúdame amigosEdittext line number y currentline cursor position.

+0

1 Creo que la pregunta se traducirá en una función útil. – Gangnus

Respuesta

7

para la corriente del cursor Línea intente esto:

public int getCurrentCursorLine(EditText editText) 
{  
    int selectionStart = Selection.getSelectionStart(editText.getText()); 
    Layout layout = editText.getLayout(); 

    if (selectionStart != -1) { 
     return layout.getLineForOffset(selectionStart); 
    } 

    return -1; 
} 

y para la posición del cursor usogetSelectionStart():

int cursorPosition = myEditText.getSelectionStart(); 
2

Si no está utilizando algún ancho fijo fuente como courrier, no es fácil.

No hay función que devuelva la posición de la letra para el texto fuente y el ancho necesario en píxeles. Tendrás que escribirlo.

se debe medir el texto, como en este caso:

paint.setTypeface(Typeface.DEFAULT);// your preference here 
paint.setTextSize(33); // have this the same as your text size 

String text = "get text here "; 

paint.getTextBounds(text, 0, text.length(), bounds); 

me gustaría utilizar para la búsqueda de la posición correcta algún algoritmo hash