Ответ 1
У вас есть два варианта: оба должны работать:
а)
editText.setText("Your text");
editText.setSelection(editText.getText().length());
б)
editText.setText("");
editText.append("Your text");
Пользователь должен ввести свой номер мобильного телефона, номер мобильного телефона должен быть 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());
б)
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);
...
}