安卓手機號碼自動添加空格效果-終極解決方案-親測能用


最近UI對於手機號輸入框提出了要自動添加空格的需求,沒辦法,產品和UI就是大爺,說了就要做呀。

但是在網上搜了好多資料,說着是能夠實現,但是大多數都是無腦的Ctrl+C 和Ctrl+V,根本就沒有實踐過,就直接復制粘貼,完全是不負責任的。也不知道源頭是誰。

既然咱們踩過坑了,就要為后人修好路。

在此留下這一條平坦大路給各位碼農朋友。

EditText et_login_phone = findViewById(R.id.et_login_phone);
        et_login_phone.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String phone = s.toString();
                //若有輸入框處於編輯狀態且有數據要顯示刪除叉號的需求,可以在此處處理
                //clearPhone.setVisibility(phone.length() > 0 ? View.VISIBLE : View.GONE);
                //將原始數據去空格處理
                String value = phone.replace(" ", "");
                //添加第三位數字后面的空格
                if (value.length() > 3) {
                    value = value.substring(0, 3) + " " + value.substring(3, value.length());
                }
                //添加第7位數字后面的空格(因為第三位數字后面有個空格,所以是在字符串第8位后面添加空格)
                if (value.length() > 8) {
                    value = value.substring(0, 8) + " " + value.substring(8, value.length());
                }
                et_login_phone.removeTextChangedListener(this);//賦值前,需要先將監聽移除,不移除,會出現卡死的問題
                et_login_phone.setText(value);//將添加空格之后的數據進行賦值
                et_login_phone.addTextChangedListener(this);//賦值后,將監聽添加到控件上
                //輸入指針至於輸入內容尾部。
                et_login_phone.setSelection(et_login_phone.getText().toString().length());
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });

  如果您有更優雅的解決方案,歡迎一起討論

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM