Android EditText 輸入監(jiān)聽使用場景系列

需求:注冊界面輸入手機號時候以188 8888 8888形式呈現(xiàn)
感謝博主:https://blog.csdn.net/as_csdn

實現(xiàn)效果:


手機輸入.gif

實現(xiàn)EditText的TextWatcher接口即可,具體在深入研究

 et_phone.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                DLog.d("---------- beforeTextChanged ----------" + "\n");
                DLog.d("s: " + s + "\n");
                DLog.d("start: " + start + "\n");
                DLog.d("count: " + count + "\n");
                DLog.d("after: " + after + "\n");
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                DLog.d("---------- onTextChanged ----------" + "\n");
                DLog.d("s: " + s + "\n");
                DLog.d("start: " + start + "\n");
                DLog.d("before: " + before + "\n");
                DLog.d("count: " + count + "\n");

                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--;
                        }
                    }
                    et_phone.setText(sb.toString());
                    et_phone.setSelection(index);
                }
            }

            @Override
            public void afterTextChanged(Editable s) {
                DLog.d("---------- afterTextChanged ----------" + "\n");
                DLog.d("s: " + s + "\n");
            }
        });

后期在更新 相關.....

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容