【问题标题】:Android phone number mask for EditTextEditText 的 Android 电话号码掩码
【发布时间】:2016-02-26 10:18:59
【问题描述】:

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

【问题讨论】:

  • 请发布您尝试过的代码。

标签: android android-edittext phonenumberutils


【解决方案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"
    />

就是这样!

【讨论】:

    【解决方案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="*"/>
    

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        【解决方案4】:

        我分享我的一段代码给你一个想法,你是怎么做到的。

        我很久以前为我的项目做的,希望你能弄清楚下面的数字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());
                    }
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-25
          • 1970-01-01
          • 2012-12-17
          • 1970-01-01
          • 2020-06-06
          • 2023-03-27
          • 1970-01-01
          相关资源
          最近更新 更多