【问题标题】:Android : Allow User to add only alphabets and special characters in an EditText [duplicate]Android:允许用户在 EditText 中仅添加字母和特殊字符 [重复]
【发布时间】:2015-07-28 09:08:36
【问题描述】:

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

有没有更好的方法来实现它?

【问题讨论】:

  • 您可以通过 addTextChangedListener 以编程方式实现此目的
  • 好的。我试试看。
  • 为什么你认为android:digits不是一个好办法?
  • 这可以帮助你。只需更改以允许 EditText stackoverflow.com/questions/14192199/… 中的内容
  • @jaiSoni :因为我必须添加很多特殊字符,而且我很有可能会错过一些。我希望找到一种方法来阻止数字。我想我找到了解决办法。

标签: android xml android-edittext


【解决方案1】:

查看EditText input type docs 以了解其中是否满足您的要求。

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

【讨论】:

    【解决方案2】:

    我使用 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 });
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 它不起作用:我收到错误解析 XML:格式不正确(无效令牌)。我只想允许有限的字符 android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/&^%$#@!"如果我使用 android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/" 那么它可以工作,但我想允许字符 &^%$#@!也来自 Android 中的 XML。
      • 我有一个要求,我只需要允许 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-/&^%$#@!来自软输入键的字符
      猜你喜欢
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多