maxLength属性不起作用了?可能是与InputFilter冲突了

我们都知道,在做登录时,通常需要对用户名和密码的长度进行限制。而在做长度限制时最简单的方法就是在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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值