2012-03-21 75 views
6

現在我正在開發一個Android應用程序。我創建了一個具有功能的自定義鍵盤。我正在使用edittext來顯示輸入的文本。編輯文本可能有n行。現在我的問題是我的鍵盤上有一個向上按鈕。因此,如果我點擊向上按鈕,那麼我必須去以前的行相同的位置。但我無法找到edittext行號和當前行的光標位置。請幫我的朋友編輯文本行號和當前行光標位置。

+0

+1我認爲這個問題會導致一個有用的功能。 – Gangnus 2012-03-21 12:46:07

回答

7

當前光標所在行試試這個:

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

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

    return -1; 
} 

和光標的位置,用getSelectionStart()

int cursorPosition = myEditText.getSelectionStart(); 
2

如果不使用某些固定寬度字體作爲信使,這並不容易。

沒有函數返回源文本的字母位置和需要的像素寬度。你將不得不寫它。

,你應該測量的文本,如下:

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

我會用搜索的正確位置,一些散列算法