EditText利用InputFilter过滤特殊字符或改变输入的内容

场景

在我们开发的过程中 ,有时会对输入框的输入内容会有限制,比如不能有空格,不能输入$$ 等特殊字符,这时我们可以利用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});
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值