如何限制Android EditText字段中的特殊字符?

33

如何限制Android EditText字段中的特殊字符?

6个回答

46

3
在ICS设备上,如果同时使用android:imeOptions="actionNext",则此方法会出现问题。'下一步'按钮将不会显示! - Ahmed Faisal
如果用户想使用英语以外的其他语言,该怎么办? - Ahmad Arslan
这个是大小写不敏感还是敏感的? - uniruddh

6
将EditText对象传递给此方法。还要将要阻止的值添加到变量blockCharacterSet中。
private void disableSpecialChar(EditText editText) {
      final String blockCharacterSet = "<>";

      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;
       }
      };

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

     }

用户仍然可以将这些无效字符粘贴到EditText中。 - Palejandro
解决方案是对每个字符进行循环检查,如下所示: https://dev59.com/ams05IYBdhLWcg3wR_63#7335559 - Palejandro

2

这并没有提供问题的答案。如果要批评或请求作者澄清,请在他们的帖子下留言。-【来自审查】 - philantrovert
显然,链接的解决方案展示了如何限制EditText中的特殊字符。这解决了我的问题,该问题与问题描述中提到的相同。 - Ashwin
好的,如果一个问题已经有了被接受的答案,你可以将其标记为重复。 - philantrovert
1
问题是不同的。一个要求解决Android小部件属性中的错误,而这个问题是关于实现需求的。但是这两个问题的解决方案是相同的。它们不能(也不应该)被标记为重复。 - Ashwin

1

这是一个包含空格的 Kotlin 版本:

private val userNameFilter =
    InputFilter { source, start, end, dest, dStart, dEnd ->
        for (i in start until end) {
            if (!Character.isLetterOrDigit(source[i]) && !Character.isWhitespace(source[i])) {
                return@InputFilter ""
            }
        }
        null
    }

1
只需将以下 XML 行放入 EditText 区块中。
android:digits="abc"

这将允许输入仅为a、b和c字符。

0
我创建了一个类,用于更灵活地设置EditText的输入约束条件:

https://github.com/devapro/NumberWatcher

这只是针对数字输入的实现,但您可以将其更改为任何类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接