开发者

android editText max limit

After I set the max character limit for an ed开发者_JS百科itText using InputFilter.LengthFilter, is there a way to make editText to react at onTextChanged after it reaches the maximum number of characters? if not, is there a simple way to set a max number of characters to an editText and still react at onTextChanged event?


In XML itself for EditText give the following Attrib,

  android:maxLength="20"


I was going through the same problem and some research on SO got me this solution. Thanks to @njzk2 for the brilliant solution. Posting it here so others can get the answer.

maxLength attribute in the EditText is actually an InputFilter, which you can write yourself and supply from code.

You can look at the implementation of InputFilter.LengthFilter, which basically returns null if there is no overflow. (see link)

WIth a little modification to that : create an extension to InputFilter.LengthFilter in which you call super and compare it to null to decide if you need to display an alert.

editText.setInputFilters(new InputFilter[] {
    new InputFilter.LengthFilter(max) {
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            CharSequence res = super.filter(source, start, end, dest, dstart, dend);
            if (res != null) { // Overflow
                   Toast.makeText(this,"OVERFLOW!",Toast.LENGTH_SHORT).show();

            }
            return res;
        }
    }
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜