android如何将EditText光标设置为其文本的末尾[复制]

【android如何将EditText光标设置为其文本的末尾[复制]】今日长缨在手,何时缚住苍龙。这篇文章主要讲述android如何将EditText光标设置为其文本的末尾[复制]相关的知识,希望能为你提供帮助。
这个问题在这里已有答案:

  • Place cursor at the end of text in EditText 23回答
用户必须输入他的手机号码,手机号码必须是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的光标从文本的开头开始,我希望它仍然在最后,怎么样?
答案你有两个选择,两个都应该工作:
一个)
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); ... }


    推荐阅读