Android:允许用户在编辑文本中只添加字母和特殊字符

Android:允许用户在编辑文本中只添加字母和特殊字符,android,xml,android-edittext,Android,Xml,Android Edittext,我希望用户在编辑文本中只输入字母和特殊字符。一种方法是在EditText的“android:digits”标记中添加所有字母表和所有特殊字符。但我认为这不是一个好办法 有没有更好的方法来实现这一目标?查看这些方法是否满足您的要求 如果不是,使用正则表达式检查EditText中的输入字符串是否符合您所需的格式是一个好主意。我使用了InputFilter来仅屏蔽数字: private static InputFilter filter = new InputFilter() { @Overr

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

有没有更好的方法来实现这一目标?

查看这些方法是否满足您的要求


如果不是,使用正则表达式检查
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 });

设置
android:digits=“abcdefghijklmnopqrstuvwxyz?/>,您可以通过AddTextChangedListenerOK以编程方式实现这一点。我来试试。你为什么认为
android:digits
不是一个好方法?这可以帮助你。只需改变一下,在你的EditText@jaiSoni:中加入你想要的内容,因为我需要添加很多特殊的角色,很有可能我会错过一些。我希望找到一种方法来屏蔽数字。我想我找到了一个解决方案。它不起作用:解析XML时出错:格式不正确(无效令牌)。我只想允许有限的字符安卓:digits=“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzo123456789-/&^%$@!”如果我使用安卓:digits=“abcdefghijklmnopqrstuvxyzabdefghijklmnopqrstuvxyzo123456789-/”那么它可以工作,但我想允许字符&^%$$$@!同样来自Android中的XML。我有一个要求,我需要只允许ABCDEFGHIjklmnopqrstuvwxyzabCDEFGHIjklmnopqrstuvxyzo123456789-/&^%$#@!来自软输入键的字符