场景
在我们开发的过程中 ,有时会对输入框的输入内容会有限制,比如不能有空格,不能输入$$ 等特殊字符,这时我们可以利用editText.setFilters
来过滤.也可以利用过滤器来替换我们输入的内容 ,比如输入的一些敏感字用**来替换,
InputFilter的使用
InputFilter inputFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
Log.e(TAG, "source:-->"+source+"==start-->"+start+"==end-->"+end+"==dest-->"
+dest.toString()+"==dstart-->"+dstart+"==dend-->"+dend);
if (source.equals(" ")){
return "0";
}
return null;
}
};
editText.setFilters(new InputFilter[]{inputFilter});
参数
source:
输入时输入的字符,比如我们连续输入12,source分别为1,2
返回值:
就是我们输入框显示的字符.比如上面的代码,输入的source是空格的时候,我们返回的是0,这时我们输入空格输入框上面显示的是0,所以我们让返回值返回”“,这样就可以输入任何内容都可以不显示
具体的参数信息我们看下面图片的log信息
InputFilter实现类(AllCaps,LengthFilter)
AllCaps
这个类可以实现输入的小写字母换成大写,如果设置此filter,输入框不再支持小写字母的书写,输出的全部是大写的
LengthFilter
这个类可以限制输入框输入的最大长度
EditText如何使用
直接editText.setFilter(new InputFilter[]{}),参数是filter数组,这样我们可以同时给输入框设置多个过滤器
InputFilter.AllCaps allCaps = new InputFilter.AllCaps();
InputFilter.LengthFilter lengthFilter=new InputFilter.LengthFilter(15);
editText.setFilters(new InputFilter[]{inputFilter,allCaps,lengthFilter});