2012-03-21 9 views
6

Ora sto lavorando ad un'applicazione Android. Ho creato una tastiera personalizzata con funzionalità. Sto usando un edittext per visualizzare i testi inseriti. Il testo di modifica può avere un numero di righe. Ora il mio problema è che ho un pulsante su nella mia tastiera. Quindi se clicco sul pulsante su, allora devo andare alla stessa posizione delle righe precedenti. Ma non sono riuscito a scoprire il numero di riga di edittext e posizione del cursore della linea corrente. Please help me amiciNumero di riga dell'asse e posizione del cursore corrente.

+0

+1 penso che la questione si tradurrà in una funzione utile. – Gangnus

risposta

7

per la corrente linea del cursore provare questo:

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

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

    return -1; 
} 

e per uso posizione del cursoregetSelectionStart():

int cursorPosition = myEditText.getSelectionStart(); 
2

Se non si utilizza un po 'di larghezza fissa font come corriere, non è facile.

Non esiste alcuna funzione che restituisca la posizione della lettera per il testo di origine e la larghezza richiesta in pixel. Dovrai scriverlo.

si dovrebbe misurare il testo, come in questo 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); 

vorrei utilizzare per la ricerca della posizione corretta qualche algoritmo di hashing

Problemi correlati