Android 安卓手机号码格式(XXX)-XXX-XXXX

Android 安卓手机号码格式(XXX)-XXX-XXXX,android,android-edittext,phone-number,Android,Android Edittext,Phone Number,我想以(XXX)-XXX-XXXX格式在编辑文本中键入电话号码。但我没有得到任何解决办法。我成功地键入了,但当我使用退格符并再次键入数字时,则此格式不可用。请给我解决方案。我的代码是 phoneEditText.addTextChangedListener(new TextWatcher() { private int keyDel; @Override public void onTextChanged(CharSequ

我想以
(XXX)-XXX-XXXX
格式在编辑文本中键入电话号码。但我没有得到任何解决办法。我成功地键入了,但当我使用退格符并再次键入数字时,则此格式不可用。请给我解决方案。我的代码是

phoneEditText.addTextChangedListener(new TextWatcher() {
            private int keyDel;

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

                phoneEditText.setOnKeyListener(new OnKeyListener() {

                    @Override
                    public boolean onKey(View v, int keyCode, KeyEvent event) {
                        if (keyCode == KeyEvent.KEYCODE_DEL)
                            keyDel = 1;
                        return false;
                    }
                });

                if (keyDel == 0) {
                    int len = phoneEditText.getText().length();
                    if (len == 3
                            && !(phoneEditText.getText().toString()
                                    .contains("("))) {
                        phoneEditText.setText("("
                                + phoneEditText.getText().toString().trim()
                                + ")-");
                        phoneEditText.setSelection(phoneEditText.getText()
                                .length());
                    } else if ((len == 1 || len == 2 || len == 4 || len == 3)
                            && (phoneEditText.getText().toString()
                                    .contains("("))) {
                        if (len == 4)
                            phoneEditText.setText(phoneEditText.getText()
                                    .toString().trim()
                                    + ")-");
                        phoneEditText.setSelection(phoneEditText.getText()
                                .length());

                    } else if (len > 3 && len == 9) {
                        phoneEditText.setText(phoneEditText.getText()
                                .toString().trim()
                                + "-");
                        phoneEditText.setSelection(phoneEditText.getText()
                                .length());
                    } else if (len > 9 && len == 14) {
                    }

                } else {
                    keyDel = 0;
                }
            }

            @Override
            public void afterTextChanged(Editable arg0) {
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                    int arg2, int arg3) {
            }
        });
查看更多选项

String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);
这将根据号码来源国的规则自动设置号码格式

您还可以使用以下方法设置可编辑文本的在位格式:

PhoneNumberUtils.formatNumber(Editable text, int defaultFormattingType);
或使用此选项来指:


您尝试过android.telephony软件包中的PhoneNumberFormattingTextWatcher吗

您可以轻松地将其添加到EditText,并使用当前区域设置或国家代码格式化文本

发件人:

观看文本视图,如果输入电话号码,将对其进行格式化

当用户

  • 输入不可拨号字符

  • 移除字符串中间的分隔符。

清除文本后,将重新启动格式化

下面是一个示例代码:

editText.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
另外,别忘了将edittext的输入类型设置为
phone


希望它能有所帮助

android:inputType=“phone”按输入类型我们只能找到简单的号码。我想当用户输入电话号码时,上面的格式会自动出现。什么是“我们只能找到简单的号码”?您目前有代码吗?你能展示一下吗?你能解决这个问题吗?我也面临着同样的问题。我尝试了每个选项都没有人工作。电话号码utils在运行时不会更改电话号码。我希望如果用户键入number,则在edittext上实现运行时格式。谢谢。但我认为这个代码是固定数字的,它不是我想要的格式。我已经在另一个帖子中发布了我的答案,
editText.addTextChangedListener(new PhoneNumberFormattingTextWatcher());