Android : 允许用户在 EditText 中只添加字母和特殊字符

Android : Allow User to add only alphabets and special characters in an EditText

我希望用户在 EditText 中只输入字母和特殊字符。一种方法是在 EditText 的 "android:digits" 标记中添加所有字母表和所有特殊字符。但我认为这不是一个好方法。

有什么更好的实现方法吗?

查看 EditText input type docs 以查看是否有任何这些满足您的要求。

如果不是,使用正则表达式检查来自 EditText 的输入字符串是否符合您要求的格式是个好主意。

我使用 InputFilter 只屏蔽数字:

private static InputFilter filter = new InputFilter() {
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        String blockCharacterSet = "1234567890";
        if (source != null && blockCharacterSet.contains(("" + source))) {
            return "";
        }
        return null;
    }
};

然后应用过滤器:

edittext.setFilters(new InputFilter[] { filter });

在 xml 内的 edittext 中设置 android:digits="abcdefghijklmnopqrstuvwxyz?/>,<.:";'{}[]\|)(*&^%$#@!~+=-_ etc"` 属性。 注意:- 请在键盘中添加所有可用的特殊字符代替等