2012-03-21 15 views
6

Teraz pracuję nad aplikacją na Androida. Stworzyłem niestandardową klawiaturę z funkcjonalnościami. Używam editekstu do wyświetlania wprowadzonych tekstów. Edycja tekstu może mieć n liczby linii. Teraz mój problem polega na tym, że mam przycisk w górę na mojej klawiaturze. Tak więc, jeśli kliknę przycisk w górę, muszę przejść do poprzedniej linii na tej samej pozycji. Nie mogłem jednak znaleźć numer linii edittext i pozycję cursera linii prądu. Proszę mi pomóc znajomychNumer wiersza editekstu i pozycja kursora w bieżącej linii.

+0

+1 Myślę, że pytanie spowoduje użytecznych funkcji. – Gangnus

Odpowiedz

7

dla bieżącego kursora Linii spróbuj tego:

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

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

    return -1; 
} 

i Cursor wykorzystania pozycjigetSelectionStart():

int cursorPosition = myEditText.getSelectionStart(); 
2

Jeśli nie używasz jakiegoś stałej szerokości czcionka jako courrier, to nie jest łatwe.

Brak funkcji, która zwraca pozycję literową dla tekstu źródłowego i potrzebną szerokość w pikselach. Będziesz musiał to napisać.

należy mierzyć tekst, jak tutaj:

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); 

użyłbym do poszukiwania właściwej pozycji jakiś algorytm mieszania