首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用电话号码格式NaN来掩码EditText,就像在PhoneNumberUtils中一样

使用电话号码格式NaN来掩码EditText,就像在PhoneNumberUtils中一样
EN

Stack Overflow用户
提问于 2010-11-11 17:06:08
回答 8查看 46.5K关注 0票数 28

我想让用户在editText中输入的电话号码,以动态改变格式,每次用户输入一个数字。也就是说,当用户输入最多4位数字时,如7144,editText将显示"714-4“。每当用户输入数字时,我希望editText动态更新为格式#-#-#。如何做到这一点?此外,我还在处理多个editTexts。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-13 05:10:50

最简单的方法是使用内置的Android PhoneNumberFormattingTextWatcher

所以基本上你在代码中获得你的EditText,并像这样设置你的文本监视器…

代码语言:javascript
复制
EditText inputField = (EditText) findViewById(R.id.inputfield);
inputField.addTextChangedListener(new PhoneNumberFormattingTextWatcher());

使用PhoneNumberFormattingTextWatcher的好处是它将根据您的区域设置正确地格式化您的数字条目。

票数 84
EN

Stack Overflow用户

发布于 2016-05-03 20:08:00

上面的答案是正确的,但它适用于特定国家。如果有人想要这样的格式化电话号码(#-#-#)。然后使用以下命令:

代码语言:javascript
复制
etPhoneNumber.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    int digits = etPhoneNumber.getText().toString().length();
                    if (digits > 1)
                        lastChar = etPhoneNumber.getText().toString().substring(digits-1);
                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    int digits = etPhoneNumber.getText().toString().length();
                    Log.d("LENGTH",""+digits);
                    if (!lastChar.equals("-")) {
                        if (digits == 3 || digits == 7) {
                            etPhoneNumber.append("-");
                        }
                    }
                }

                @Override
                public void afterTextChanged(Editable s) {

                }
            });

在您的活动中声明String lastChar = " "

现在,在您的edittext的xml中添加这一行

代码语言:javascript
复制
android:inputType="phone"

就这样。

编辑的如果您想要您的编辑文本长度限制为10位数,还可以在下面添加一行:

代码语言:javascript
复制
android:maxLength="12"

(它是12,因为"-“将占用两次空间)

票数 10
EN

Stack Overflow用户

发布于 2016-08-26 01:49:27

只需将以下代码添加到Phone Number的EditText中,即可获得格式化的电话号码(#-#-#)

代码语言:javascript
复制
Phone.addTextChangedListener(new TextWatcher() {

        int length_before = 0;

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            length_before = s.length();
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            if (length_before < s.length()) {
                if (s.length() == 3 || s.length() == 7)
                    s.append("-");
                if (s.length() > 3) {
                    if (Character.isDigit(s.charAt(3)))
                        s.insert(3, "-");
                }
                if (s.length() > 7) {
                    if (Character.isDigit(s.charAt(7)))
                        s.insert(7, "-");
                }
            }
        }
    });
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4152780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档