When reach max,pop up hint window:
private static String invalid_char[] ={"\\", "/", ":", "*", "?", "\"", "<", ">", "|", ";", "\n" }; private static Toast itoast = null; private static Toast mtoast = null; itoast = Toast.makeText(this, R.string.invalid_character, Toast.LENGTH_SHORT); mtoast = Toast.makeText(this, R.string.max_char_reached_msg, Toast.LENGTH_SHORT); editText.setFilters(getEditTextFilter()); static public InputFilter[] getEditTextFilter(){ InputFilter[] FilterArray = new InputFilter[2]; //add by dan.yin 11-12-6 //limit the input length class SizeFilter implements InputFilter { private int mMax; public SizeFilter(int max) { mMax = max; } public CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend) { int keep = mMax - (dest.length() - (dend - dstart)); if (keep <= 0) { mtoast.cancel(); mtoast.show(); return ""; } else if (keep >= end - start) { return null; } else { return source.subSequence(start, start + keep); } } } FilterArray[0] = new SizeFilter(50); //FilterArray[0] = new InputFilter.LengthFilter(50); FilterArray[1] = new InputFilter() { public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { for(int i=0; i<invalid_char.length; i++){ if(source.toString().indexOf(invalid_char[i]) >= 0){ itoast.cancel(); itoast.show(); return ""; } } return null; } }; return FilterArray; }
==========================another method============================================================