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或max length:
EditText etname;
etname.setFilters(new InputFilter[] { filter });
etname.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});

谁能一次帮助我同时设置两个以上的过滤器?

最佳答案

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

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

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

10-05 19:51