Mask an EditText with Phone Number Format NaN like in PhoneNumberUtils

后端 未结 8 1277
广开言路
广开言路 2020-12-05 05:08

I want to make user inputted phone number in an editText to dynamically change format every time the user inputs a number. That is, when user inputs up to 4 digits, like 714

8条回答
  •  长情又很酷
    2020-12-05 05:27

    Just add the following to EditText for Phone Number to get a formatted phone number(###-###-####)

    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, "-");
                    }
                }
            }
        });
    

提交回复
热议问题