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提示已超过输入上限
                }
            }
        });


你可能感兴趣的:(个人积累,小方法封装,方法,java程序)