2016-02-26 3 views
3

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

+0

Пожалуйста, внесите свой код, что вы пробовали. – Rohit5k2

ответ

0

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

Я сделал это для моего проекта давно, я надеюсь, что вы могли бы выяснить, как следующее число 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()); 
      } 
     } 
0

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

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

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

Полезные ссылки: Android Docs, Phone Number formats of different countries, ISO code of countries

1

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

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="*"/> 

enter image description here

1

Самый эффективный способ использования маски на EditText в ваших программах Android в Android Studio - использовать библиотеку MaskedEditText (GitHub link). Это своего рода пользовательский 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" 
    /> 

И это!

enter image description here

Смежные вопросы