如何在EditText上设置多个InputFilter?

6
int maxLength = 20;
private String blockCharacterSet = "~#^|$%'&*!;";

private InputFilter filter = new InputFilter()
{

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
    {

        if (source != null && blockCharacterSet.contains(("" + source))) {
            return "";
        }
        return null;
    }
};

这里只有一个过滤器在工作,可以是blockCharacterSet或者maxLength:

EditText etname;
etname.setFilters(new InputFilter[] { filter });
etname.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});

有人可以帮我同时设置以上两个过滤器吗?

查看解决方案请访问 https://dev59.com/aWYr5IYBdhLWcg3wxM0k - Raghavendra
我已经尝试过这个,但没有用。 - veeraprasad
尝试一下Akshay的解决方案。 - Raghavendra
@veeraprasad 有任何解决方案吗? - Tara
1个回答

14

如果您有两个输入过滤器,请像下面这样将它们添加到数组中:

etname.setFilters(new InputFilter[] {
    new InputFilter.LengthFilter(maxLength), filter});

最后,setFilter() 接受一个输入过滤器数组,因此你在 setFilters() 中创建的数组应该包含所有的输入过滤器。


非常感谢,您的建议起作用了...我们之前使用 && 来连接这些过滤器... - veeraprasad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接