Маска номера телефона Android для EditText

Я занимаюсь разработкой приложения для Android. В этом приложении пользователь должен зарегистрироваться и ему нужно набрать номер телефона. Я хочу сделать маску для этого текстового поля в формате, как +7 (999) 999-99-99. Я пытался использовать mPhoneNumberEditText.addTextChangedListener(new PhoneNumberFormattingTextWatcher()); но он обеспечивает только (999) 999-9999 формат. Как я могу сделать формат, который мне нужен?

4 ответа

Наиболее эффективный способ использования маски на 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="1234567890"
    mask:mask="+7(###)###-##-##"
    app:keep_hint="true"
    />

И это так!

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

Формат, который вы ищете, используется в России. Используйте для этого следующий код:

String data = PhoneNumberUtils.formatNumber("9999999999", "RU");
Log.i("Number", data);

Первый параметр - это ваша числовая строка, а второй - код ISO страны.

Полезные ссылки: Android Docs, форматы телефонных номеров разных стран, ISO код стран

Этот плагин может помочь:

https://github.com/pinball83/Masked-Edittext

<com.github.pinball83.maskededittext.MaskedEditText
            android:id="@+id/masked_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="number"
            app:mask="+7 (***) ***-**-**"
            app:notMaskedSymbol="*"/>

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

Я делюсь своим фрагментом кода, чтобы дать вам представление о том, как вы можете это сделать.

Я сделал это для своего проекта давным-давно, я надеюсь, вы могли бы выяснить, как следующее число XXXXXXXXXXXXX преобразуется в XXXXX-XXXXXXX-X в textwatcher

 @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            int i = et_cnic.getText().toString().length();
            if (i < 6)
                len = 0;
            if (i == 6 && len < 7) {
                len = 7;
                String ss = s.toString();
                String first = ss.substring(0, ss.length() - 1);
                String last = ss.substring(ss.length() - 1);
                et_cnic.setText(first + "-" + last);
                et_cnic.setSelection(et_cnic.getText().length());
            }
            if (i < 14)
                len2 = 0;
            if (i == 14 && len2 < 14) {
                len2 = 14;
                String ss = s.toString();
                String first = ss.substring(0, ss.length() - 1);
                String last = ss.substring(ss.length() - 1);
                et_cnic.setText(first + "-" + last);
                et_cnic.setSelection(et_cnic.getText().length());
            }
        }
Другие вопросы по тегам