在Android的EditText中如何获取光标位置?

92

我正在使用自定义的EditText视图。我重写了OnKeyUp事件,并能够捕获Enter键按下。现在我的要求是,当用户输入文本“嗨。你好吗?”然后将光标放在单词“are”之后并按Enter键时,我需要获取光标位置,以便在按Enter键时提取光标后的文本。请告诉我如何做到这一点。感谢您的时间和帮助。

1个回答

191

您可以使用getSelectionStart()和getSelectionEnd()方法获取光标位置。如果没有文本被选中,getSelectionStart()和getSelectionEnd()都会返回光标的位置。因此,类似以下的代码应该可以解决问题:

myEditText.getSelectionStart();
或者
myEditText.getSelectionEnd();

那么如果你想选择光标后面的所有文本,可以使用以下代码:

int cursorPosition = myEditText.getSelectionStart();
CharSequence enteredText = myEditText.getText().toString();
CharSequence cursorToEnd = enteredText.subSequence(cursorPosition, enteredText.length());

2
对于一些人来说,了解 getSelectionEnd 和 getSelectionStart 是 Selection 类中的静态方法,而不是 EditText 本身上的方法可能会有所帮助。这是文档链接:https://developer.android.com/reference/android/text/Selection - Jo Momma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接