Маскированный ввод с помощью виджета EditText в Android

Есть ли способ указать маску ввода для элемента управления EditText в Android?

Я хочу иметь возможность указать что-то вроде ### – ## – #### для номера социального страхования. Это приведет к автоматическому отклонению любого недействительного ввода (например, я печатаю алфавитные символы вместо числовых цифр).

Я понимаю, что я могу добавить OnKeyListener и проверять вручную. Но это утомительно, и мне придется обрабатывать различные краевые дела.

Buzzy

Solutions Collecting From Web of "Маскированный ввод с помощью виджета EditText в Android"

Попробуйте использовать InputFilter а не OnKeyListener . Это означает, что вам не нужно беспокоиться о отслеживании отдельных нажатий клавиш, а также обрабатывать такие вещи, как вставка в поле, которое было бы болезненно для обработки с помощью OnKeyListener .

Вы могли бы взглянуть на источник в реализациях InputFilter которые поставляются с Android, чтобы дать вам отправную точку для написания собственных.

Вы можете взглянуть на класс android.telephony.PhoneNumberFormattingTextWatcher. Он маскирует текстовый ввод номера телефона с шаблоном ### – ### – ####.

 String phoneNumber = "1234567890"; String text = String.valueOf( android.telephony.PhoneNumberUtils.formatNumber(phoneNumber) ); //formatted: 123-456-7890 editTextMobile.setText(text); //set editText text equal to new formatted number editTextMobile.setSelection(text.length()); //move cursor to end of editText view 

Используйте это в функции onKey для восхитительного секс-зайчика «на лету» с форматированными телефонными номерами.

Самый простой способ использовать маску на EditText в ваших программах Android в Android Studio – использовать библиотеку MaskedEditText ( ссылка GitHub ). Это своего рода пользовательский EditText с Watcher, который позволяет вам установить подсказку с другим цветом (если вы хотите, чтобы он был доступен, даже когда пользователь уже начал вводить текст), маска и очень проста в использовании 🙂

 compile 'ru.egslava:MaskedEditText:1.0.5' <br.com.sapereaude.maskedEditText.MaskedEditText android:id="@+id/phone_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:typeface="monospace" mask:allowed_chars="1234567" mask:mask="###-##-##" app:keep_hint="true" /> 

И это!

Введите описание изображения здесь

Этот сайт дает хорошие 2 класса, которые помогают с маскировкой, которые я нашел весьма полезными.

Вы должны использовать элементы в комментариях, чтобы улучшить его. Но стоит добавить в свою программу для облегчения маскировки представлений EditText для многих масок.

Вы можете использовать этот efect в EditText

Введите описание изображения здесь