如何在EditText上设置多个InputFilters?

时间:2016-12-08 13:32:34

标签: android android-edittext

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或最大长度:

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

有人可以帮我一次设置上面两个过滤器吗?

1 个答案:

答案 0 :(得分:8)

如果您有两个inputFilters,请将其添加到数组中,如下所示:

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

最后setFilter()采用了一系列输入过滤器,因此在setFilters()中创建的数组中应该包含所有输入过滤器。