Android 编辑文本行号和当前行光标位置。

Android 编辑文本行号和当前行光标位置。,android,Android,现在我正在开发一个Android应用程序。我创建了一个具有功能的自定义键盘。我正在使用编辑文本来显示输入的文本。编辑文本可能有n行。现在我的问题是我的键盘上有一个向上按钮。因此,如果我单击向上按钮,那么我必须转到前几行相同的位置。但是我无法找到当前行的编辑文本行号和光标位置。请帮助我的朋友对于当前光标行,请尝试以下操作: public int getCurrentCursorLine(EditText editText) { int selectionStart = Select

现在我正在开发一个Android应用程序。我创建了一个具有功能的自定义键盘。我正在使用编辑文本来显示输入的文本。编辑文本可能有n行。现在我的问题是我的键盘上有一个向上按钮。因此,如果我单击向上按钮,那么我必须转到前几行相同的位置。但是我无法找到当前行的编辑文本行号和光标位置。请帮助我的朋友

对于当前光标行,请尝试以下操作:

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

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

    return -1;
}
int cursorPosition = myEditText.getSelectionStart();
对于光标位置,使用
getSelectionStart()

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

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

    return -1;
}
int cursorPosition = myEditText.getSelectionStart();

如果你不使用一些固定宽度的字体作为信使,这是不容易的

没有函数返回源文本的字母位置和所需的像素宽度。你得写下来

您应该测量文本,如下所示:

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);
我会用一些哈希算法来搜索正确的位置