如何在EditText上设置多个InputFilters?

vee*_*sad 4 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;
    }
};
Run Code Online (Sandbox Code Playgroud)

这里只有一个过滤器正在运行blockCharacterSet或最大长度:

EditText etname;
etname.setFilters(new InputFilter[] { filter });
etname.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
Run Code Online (Sandbox Code Playgroud)

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

Aks*_*AB' 11

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

etname.setFilters(new InputFilter[] {
    new InputFilter.LengthFilter(maxLength), filter});
Run Code Online (Sandbox Code Playgroud)

最后setFilter()是输入过滤器数组,因此在您创建的数组中setFilters()应该包含所有输入过滤器.