EditText输入限制setFilters

来源:互联网 发布:全球数据公司 编辑:程序博客网 时间:2024/05/21 15:03

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 lengthclass 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============================================================

private Toast mToast = null;//mPlaylist.setFilters(new InputFilter[]{new InputFilter.LengthFilter(30)}); //256       mPlaylist.setFilters(new InputFilter[] { new InputFilter() {                                  @Override                                  public CharSequence filter(CharSequence source,                                                   int start, int end, Spanned dest,                                                   int dstart, int dend) {                                          int keep = 30 - (dest.length() - (dend - dstart));                                          if (keep <= 0) {                                                showToast(R.string.max_char_reached_msg);                                                return "";                                          } else if (keep >= end - start) {                                                return null;                                          }else {                                                return source.subSequence(start, start + keep);                                          }                                   }                      } });private void showToast(int resId){         if(mToast == null)         {                mToast = Toast.makeText(this, resId, Toast.LENGTH_SHORT);         }         else{                mToast.cancel();                mToast.setText(resId);         }         mToast.show();}


 

原创粉丝点击