在Android EditText中设置光标位置

23

我该如何设置Android EditText中的光标位置?我有一个EditText,在创建时我想将光标设置在文本的末尾或者是中间,我该怎么做?

我的EditText代码如下:

android:id="@+id/editText11"
android:layout_width="wrap_content"
android:layout_height="200sp"
android:layout_above="@+id/horizontalScrollView1"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:gravity="top"
android:background="#00000000"
android:inputType="textMultiLine"
android:singleLine="true"
4个回答

50

你可以通过使用以下方法来实现:

Edittext.setSelection(Edittext.length());

这将把光标位置置于末尾。否则,您可以将文本获取为字符串,并检查您想要放置光标的文本位置,并像这样执行。

String text = edittext.getText().toString();

for(int i = 0; i <text.length();i++)
{
//your logic here to check the position of text
}

然后

Edittext.setSelection(position);

有没有建议将光标位置设置到提示文本的末尾? - CoDe
setSelection() 方法不可用..? - sujith s
setSelection() 可用,但我无法将光标移动到任何位置。 - Ansal Ali
应该使用 Selection.setSelection(length) 而不是 EditText.setSelection()。 - Abhishek Kumar
Edittext.length() 是未知的。请使用 edittext.text.length - CoolMind

19

开头位置

editText.setSelection(0);

结尾处的位置

editText.setSelection(editText.getText().length());

中间的位置

editText.setSelection(editText.getText().length() / 2);

有没有建议将光标位置设置到提示文本的末尾? - CoDe
@CoDe 你为什么需要那个?如果你设置了任何提示,每当用户键入时,他只会从索引0开始。 - CopsOnRoad

4

试试这个

editText1.requestFocus(Your_Text.length());

希望这对你有所帮助。

你提到的方法需要输入方向而非长度。请查看这里 - Shaishav

1
editText1.setSelection(Your position)

EditText etext = (EditText)findViewById(R.id.inbox);
etext.setSelection(etext.getText().length());

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