Mask an EditText with Phone Number Format NaN like in PhoneNumberUtils

后端 未结 8 1293
广开言路
广开言路 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:33

    The above solutions do not take backspace into consideration so when you delete some numbers after typing, the format tends to mess up. Below code corrects this issue.

    phoneNumberEditText.addTextChangedListener(new TextWatcher() {
    
            int beforeLength;
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                beforeLength = phoneNumberEditText.length();
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                int digits = phoneNumberEditText.getText().toString().length();
                if (beforeLength < digits && (digits == 3 || digits == 7)) {
                    phoneNumberEditText.append("-");
                }
            }
    
            @Override
            public void afterTextChanged(Editable s) { }
        });
    

提交回复
热议问题