Маскированный ввод с использованием виджета EditText в Android - PullRequest
18 голосов
/ 26 мая 2010

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

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

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

Buzzy

Ответы [ 6 ]

21 голосов
/ 26 мая 2010

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

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

3 голосов
/ 24 сентября 2010

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

2 голосов
/ 07 марта 2017

Самый простой способ использовать маску для 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"
    />

И это!

enter image description here

2 голосов
/ 21 декабря 2010
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 для восхитительного секса на кролике на лету с отформатированными номерами телефонов.

1 голос
/ 29 декабря 2015

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

enter image description here

0 голосов
/ 29 сентября 2014

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

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

...