我正在keyListener
上更改EditText
的值。
但是,当我更改文本时,光标将移动到EditText
的开头。我需要将光标放在文本的末尾。
如何在EditText
中将光标移动到文本的末尾。
尝试这个:
EditText et = (EditText)findViewById(R.id.inbox);
et.setSelection(et.getText().length());
ediitext 有一个名为 append 的函数,该函数将字符串值附加到当前的 edittext 值,并将光标置于该值的末尾。您可以将字符串值作为当前 ediitext 值本身,然后调用 append();。
myedittext.append("current_this_edittext_string");
科特林 :
将光标设置到起始位置 :
val editText = findViewById(R.id.edittext_id) as EditText
editText.setSelection(0)
将光标设置在 EditText的末尾 :
val editText = findViewById(R.id.edittext_id) as EditText
editText.setSelection(editText.text.length)
下面的代码是将光标放在第二个字符之后:
val editText = findViewById(R.id.edittext_id) as EditText
editText.setSelection(2)
JAVA :
将光标设置到起始位置 :
EditText editText = (EditText)findViewById(R.id.edittext_id);
editText.setSelection(0);
将光标设置在 EditText的末尾 :
EditText editText = (EditText)findViewById(R.id.edittext_id);
editText.setSelection(editText.getText().length());
下面的代码是将光标放在第二个字符之后:
EditText editText = (EditText)findViewById(R.id.edittext_id);
editText.setSelection(2);
如果您之前调用过setText
,但是新文本未获得布局阶段,请在由View.post(Runnable)
激发的单独可运行对象中调用setSelection
(从本主题重新发布)。
因此,对我来说,这段代码有效:
editText.setText("text");
editText.post(new Runnable() {
@Override
public void run() {
editText.setSelection(editText.getText().length());
}
});
编辑 05/16/2019:现在我正在为此使用 Kotlin 扩展名:
fun EditText.placeCursorToEnd() {
this.setSelection(this.text.length)
}
然后 - editText.placeCursorToEnd()。
您也可以将光标放在EditText
视图中文本的末尾,如下所示:
EditText et = (EditText)findViewById(R.id.textview);
int textLength = et.getText().length();
et.setSelection(textLength, textLength);
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
editText.setSelection(editText.getText().length());
return false;
}
});
这是另一种可能的解决方案:
et.append("");
如果由于某种原因它不起作用,请尝试以下解决方案:
et.setSelection(et.getText().length());
您应该可以使用 EditText 的 setSelection()方法实现此目标,请参见此处
就我而言,我创建了以下 kotlin 分机。功能,可能对某人有用
private fun EditText.focus(){
requestFocus()
setSelection(length())
}
然后使用如下
mEditText.focus()
/**
* Set cursor to end of text in edittext when user clicks Next on Keyboard.
*/
View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if (b) {
((EditText) view).setSelection(((EditText) view).getText().length());
}
}
};
mEditFirstName.setOnFocusChangeListener(onFocusChangeListener);
mEditLastName.setOnFocusChangeListener(onFocusChangeListener);
它对我有用!