【android如何将EditText光标设置为其文本的末尾[复制]】今日长缨在手,何时缚住苍龙。这篇文章主要讲述android如何将EditText光标设置为其文本的末尾[复制]相关的知识,希望能为你提供帮助。
这个问题在这里已有答案:
- Place cursor at the end of text in EditText 23回答
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);
...
}
推荐阅读
- 如何连续删除键盘退格键上的字符长按android
- SetEditable在最新的Android版本中不起作用
- Android EditText Capital Characters
- Android(TextInputLayout不同inputTypes的不同间距)
- 如何在android中显示密码开/关模式的切换按钮
- 笔画没有应用于矩形到xml drawable用作android中的edittext背景
- 在Android中滚动recyclelerview时,Edittext值消失
- 键盘进入Android时,EditText超出了窗口范围
- 将Android EditText格式化为HH(MM:SS)