Пользовательский EditText, который предотвращает ввод пользователя после n символов - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь заставить текст редактирования вести себя следующим образом:

Пользователь может ввести максимум 10 символов, если при редактировании текста фокус теряется, текущий текст форматируется следующим образом: 0123456789 -> 0 12 3 4 5 6 7 8 9.

Таким образом, сам текст редактирования может содержать до 19 символов.После того, как фокус снова получен, пользователь не может вводить, пока он / она не удалит символы.

В настоящее время я взламывал текст с помощью TextWatcher, и решение выглядит не очень (нужны флаги, обработчик и возможность запуска).Так что есть идеи, если есть несколько хороших способов сделать это, может быть, переопределить некоторые методы суперкласса или что-то в этом роде?

Br, Niko

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Попробуйте создать свой собственный класс, расширяющий EditText, и переопределите метод onTextChanged. Здесь, после x набранного количества символов, установите его только для чтения / не сфокусировано / что угодно, и отформатируйте его самостоятельно. или, может быть, onKeyDown?

0 голосов
/ 29 марта 2012

Я думаю, что вы все еще можете реализовать TextWatcher, чтобы позволить пользователю вводить всего 10 символов. Всякий раз, когда пользователь вводит 10 символов, установите для EditText значение недоступно для редактирования. И также установите OnFocusChangeListener к нему. Поэтому всякий раз, когда он теряет фокус, изменяйте его текст и добавляйте пробел после каждого символа, кроме последнего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...