1. 程式人生 > >EditText 設定字數限制,超過字數限制時 toast 提示並且輸入無效

EditText 設定字數限制,超過字數限制時 toast 提示並且輸入無效

以下只是我解決問題過程中的一點點個人總結,點滴積累,貴在堅持,感謝你的閱覽!

以45個字元限制為例:

final int maxInputCharCount = 45;//定義一個 int 常量,取值45,表示字元限制為45
mEditText.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) {
                if(s.length() > maxInputCharCount){
                    int c = count - (s.length() - maxInputCharCount);
                    s = s.subSequence(0, start + c).toString() + s.subSequence(start + count, s.length()).toString();
                    mEditText.setText(s);
                    mEditText.setSelection(start + c);
                }
            }

            @Override
            public void afterTextChanged(Editable s) {
                String editable = mEditText.getText().toString();
                if (!editable.equals(str)) {
                    mEditText.setText(str);
                    int length = mEditText.getText().toString().length();
                    if (length > 0 && length <= maxInputCharCount) {
                        mEditText.setSelection(length);
                    }
                }
                int leftLength = maxInputCharCount - mEditText.length();
                if(leftLength == 0){
                    //Toast提示已超過輸入上限
                }
            }
        });