EditText форматирование
Теперь у меня есть EditText
с TextWatcher
который форматирует пользовательский ввод как телефон. Например, если пользовательский ввод 89011234567
это будет отформатировано как +7 (901) 123-45-67
,
Интересно, есть ли способ расширить или реализовать некоторые классы, такие как CharSequence
или же Editable
или любой другой подобный EditText
отображать форматированный вывод, но когда я позвоню mEditText.getText().toString()
он вернет исходный ввод пользователей?
2 ответа
Вы можете создать класс, который расширяет стандартный EditText, а затем переопределить getText()
способ вернуть то, что вам нужно.
public class MyEditText extends EditText {
//Implement the methods that need implementation. Calling the method in the super class should do the trick
@Override
public Editable getText() {
//return an Editable with the required text.
}
}
Тогда вы просто используете MyEditText
вместо обычного EditText.
Это решение будет работать, если вы не используете getText()
-метод в других местах (например, ваш TextWatcher).
Вы можете сохранить введенные пользователем данные в свойстве tag вашего edittext, таким образом вы сможете получить к нему доступ, и он не будет изменен с помощью setText для отображения отформатированного числа!