L'utilisateur doit entrer son numéro de portable, le numéro de portable doit être composé de 10 numéros, j'ai utilisé TextWatcher
pour le faire, comme ceci
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("*");
}
}
});
mais le problème est que lorsque l'utilisateur entre le 11ème chiffre, le curseur de l'edittext commence au début du texte, je veux qu'il soit toujours à la fin, comment?
Vous avez deux options, les deux devraient fonctionner:
une)
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);
Cela fonctionne bien pour moi!
Alors que jenzz anwser fonctionne pour le cas le plus simple. Ce n'est pas le cas si vous déplacez le curseur avant de modifier votre texte car dès que la deuxième lettre est saisie, il sera déplacé à la fin du texte d'édition.
Préférez utiliser cette solution:
@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);
...
}