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的光标从文本的开头开始,我希望它仍然在最后,怎么样?

  • 如何在我的滚动视图中调整我的imageview的大小,因为它在这个图像中完成?
  • 以编程方式从Appcompat 22.2.0更改浮动操作button的颜色
  • 如何清除TableLayout中的所有行?
  • 可靠地获得状态栏的高度以解决KitKat半透明导航问题
  • TableLayout权重总和问题
  • 如果有足够的空间,请在布局的中心查看
  • 自定义视图由多个视图组成
  • 在Android中获取布局的宽度/高度
  • 你有两个选择,两个都应该工作:

    一个)

     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); ... }