EditText的Android手机号码掩码

时间:2016-02-26 10:18:59

标签: android android-edittext phonenumberutils

我正在为Android开发应用程序。在这个应用程序用户需要注册,他需要类型的电话号码。我想为这个文本字段制作掩码,格式如+7(999)999-99-99。我尝试过使用mPhoneNumberEditText.addTextChangedListener(new PhoneNumberFormattingTextWatcher());但它只提供了(999)999-9999格式。 如何格式化我需要的格式?

4 个答案:

答案 0 :(得分:2)

  

此插件可以提供帮助:

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 :(得分:1)

在Android Studio的Android程序中使用EditText上遮罩的最有效方法是使用MaskedEditText库(GitHub link)。 这是一种带有Watcher的自定义EditText,允许您设置不同颜色的提示(如果您想要,即使用户已经开始输入也可用),掩码并且它非常易于使用: - )

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

答案 2 :(得分:0)

我正在分享我的代码片段给你一个想法,你怎么能这样做。

我很久以前为我的项目做过,我希望你能弄明白以下数字XXXXXXXXXXXXX如何在textwatcher中转换为XXXXX-XXXXXXX-X

 @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());
            }
        }

答案 3 :(得分:0)

您正在寻找的格式在俄罗斯使用。 使用以下代码:

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

第一个参数是您的数字字符串,第二个参数是国家/地区的ISO代码。

有用的链接:Android DocsPhone Number formats of different countriesISO code of countries