Android手机号格式(XXX)-XXX-XXXX [英] Android Phone number format (XXX)-XXX-XXXX

查看:253
本文介绍了Android手机号格式(XXX)-XXX-XXXX的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想键入的EditText 电话号码格式为:(XXX)-XXX-XXXX 。但我没有得到这个任何解决方案。我成功地类型,但是当我使用退格键,再输入号码,然后这种格式不comes.Please给我的解决方案。我的code是

  phoneEditText.addTextChangedListener(新TextWatcher(){
            私人诠释keyDel;

            @覆盖
            公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,
                    诠释计数){

                phoneEditText.setOnKeyListener(新OnKeyListener(){

                    @覆盖
                    公共布尔onKey(视图V,INT关键code,KeyEvent的事件){
                        如果(键code == KeyEvent.KEY code_DEL)
                            keyDel = 1;
                        返回false;
                    }
                });

                如果(keyDel == 0){
                    。INT LEN = phoneEditText.getText()长度();
                    如果(LEN == 3
                            &功放;&安培; !(phoneEditText.getText()的toString()
                                    。载(())){
                        phoneEditText.setText((
                                + phoneEditText.getText()。的toString()。修剪()
                                +) - );
                        phoneEditText.setSelection(phoneEditText.getText()
                                。长度());
                    }否则,如果((LEN == 1 || LEN == 2 || LEN == 4 || LEN == 3)
                            &功放;&安培; (phoneEditText.getText()的toString()
                                    。载(())){
                        如果(LEN == 4)
                            phoneEditText.setText(phoneEditText.getText()
                                    的ToString()。修剪()
                                    +) - );
                        phoneEditText.setSelection(phoneEditText.getText()
                                。长度());

                    }否则如果(LEN> 3及和放大器; LEN == 9){
                        phoneEditText.setText(phoneEditText.getText()
                                的ToString()。修剪()
                                + - );
                        phoneEditText.setSelection(phoneEditText.getText()
                                。长度());
                    }否则如果(LEN> 9和;&安培; LEN == 14){
                    }

                } 其他 {
                    keyDel = 0;
                }
            }

            @覆盖
            公共无效afterTextChanged(编辑为arg0){
            }

            @覆盖
            公共无效beforeTextChanged(CharSequence的arg0中,INT ARG1,
                    INT ARG2,诠释ARG3){
            }
        });
 

解决方案

看看的 PhoneNumberUtils ,获取更多的选择。

 字符串formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);
 

根据该国的数量从规则这将自动格式化数字。

您也可以使用格式化就地编辑的文本:

  PhoneNumberUtils.formatNumber(可编辑的文本,诠释defaultFormattingType);
 

或使用该参考的https://$c$c.google.com/ P / libphonenumber /

  PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
尝试 {
  联系号码swissNumberProto = phoneUtil.parse(swissNumberStr,US);
  字符串手机= phoneUtil.format(edt.getText()。toString()方法,PhoneNumberFormat.NATIONAL)
}赶上(NumberParseException E){
  通信System.err.println(NumberParseException被抛出:+ e.toString());
}
 

I want to type phone number in EditText in format (XXX)-XXX-XXXX. But I am not getting any solution for this. I succeeded to type but when I use backspace and again type number then this format not comes.Please give me solution. My code is

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) {
            }
        });

解决方案

Take a look at PhoneNumberUtils for more options.

String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);

This will automatically format the number according to the rules for the country the number is from.

You can also format Editable text in-place using:

PhoneNumberUtils.formatNumber(Editable text, int defaultFormattingType);

OR Use this refer to https://code.google.com/p/libphonenumber/:

PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
  PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "US");
  String Phone=phoneUtil.format(edt.getText().toString(), PhoneNumberFormat.NATIONAL)
} catch (NumberParseException e) {
  System.err.println("NumberParseException was thrown: " + e.toString());
}

这篇关于Android手机号格式(XXX)-XXX-XXXX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆