android如何将EditText Cursor设置为其文本的末尾

用户必须输入他的手机号码,手机号码必须是10个号码,我用TextWatcher这样做,就像这样

 et_mobile.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub if (et_mobile.getText().toString().length() > 10) { et_mobile.setText(et_mobile.getText().toString() .subSequence(0, 10)); tv_mobileError.setText("Just 10 Number"); }else{ tv_mobileError.setText("*"); } } }); 

但问题是当用户输入第11个数字时,edittext的光标从文本的开头开始,我希望它仍然在最后,怎么样?

Solutions Collecting From Web of "android如何将EditText Cursor设置为其文本的末尾"

你有两个选择,两个都应该工作:

一个)

 editText.setText("Your text"); editText.setSelection(editText.getText().length()); 

b)

 editText.setText(""); editText.append("Your text"); 
 /** * Set pointer 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); 

它对我有用!

虽然jenzz anwser适用于最简单的情况。 如果在编辑文本之前移动光标则不会,因为只要键入第二个字母,它就会移动到EditText的末尾。

喜欢使用这个解决方案:

  @Override public void onTextChanged(CharSequence s, int start, int before, int count) { ... int position = et_mobile.getSelectionStart(); et_mobile.setText(f(s)); et_mobile.setSelection(position); ... }