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 для отображения отформатированного числа!

Другие вопросы по тегам