我们都知道,在做登录时,通常需要对用户名和密码的长度进行限制。而在做长度限制时最简单的方法就是在EditText(或者TextView)中设置maxLength属性。前段时间做了一个项目,需要做登录功能,在对EditText输入长度限制时就用到了这个属性。后来需求又稍有变动,要求在输入时不接受空格和换行,也很简单,对输入框加上输入过滤就行了,如下:
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source.equals(" ") || source.equals("\n"))
return "";
else
return null;
}
这里是让Activity实现InputFilter接口。然后给EditText绑定上该过滤器:
et.setFilters(new InputFilter[]{this});
做完这些,发现输入过滤是可以了,但长度限制居然不再起作用了。确定maxLength属性还在,猜测可能和刚做的输入过滤有关,于是屏蔽掉输入过滤绑定代码,再试长度限制就有效了,原来是maxLength属性和InputFilter冲突了。这又是为什么呢?我们注意到在过滤的方法中有几个int类型的参数,于是猜测应该和长度有关,根据几个参数字面上的意思应该是和end