Вы не можете удалить дефис, потому что в ontextchanged
, когда вы попадаете в положение символа дефиса, вы снова добавляете дефис.
Вы должны различать, если вы получили дефис добавление текста или удаление текста.
Если вы попали в дефис, удалив текст, вы не хотите добавлять дефис.
Вы можете проверить по этому коду if(before-count<0){
Ниже приведен ваш рабочий пример
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if ((editText.getText().length() + 1 == 3 || editText.getText().length() + 1 == 6 || editText.getText().length() + 1 == 9)) {
if(before-count<0){
editText.setText(editText.getText() + "-");
editText.setSelection(editText.getText().length());
}
}
}
@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
}
});
}
}
XML
android:maxLength="13"