Android 輸入電話號碼自動空格

在輸入電話號碼的時候,我們看到很多app可以輸入130 xxxx xxxx的格式,即中間空一格。如下圖
輸入電話號碼自動空格
其實做起來也比較簡單,只要在輸入的時候實現TextWatcher監聽就好,具體的監聽代碼如下:

phone.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if (s == null || s.length() == 0) return;
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < s.length(); i++) {
                    if (i != 3 && i != 8 && s.charAt(i) == ' ') {
                        continue;
                    } else {
                        sb.append(s.charAt(i));
                        if ((sb.length() == 4 || sb.length() == 9) && sb.charAt(sb.length() - 1) != ' ') {
                            sb.insert(sb.length() - 1, ' ');
                        }
                    }
                }
                if (!sb.toString().equals(s.toString())) {
                    int index = start + 1;
                    if (sb.charAt(start) == ' ') {
                        if (before == 0) {
                            index++;
                        } else {
                            index--;
                        }
                    } else {
                        if (before == 1) {
                            index--;
                        }
                    }
                    phone.setText(sb.toString());
                    phone.setSelection(index);
                }
            }
            @Override
            public void afterTextChanged(Editable editable) {
            }
        });

其中phone即爲輸入電話號碼的編輯框。僅這一處改變,其他按照正常操作就好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章