31

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

4

5 回答 5

44

您是否尝试过添加android:digits="abcde.....0123456789"属性?虽然android:digits指定它是一个数字字段,但我可以将它设置为也接受字母和特殊字符(在 SDK-7 上测试)。

如果这不起作用,那么你将不得不实施KeyListener 见: http: //developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener)

于 2010-08-02T07:08:46.753 回答
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 });

     }
于 2015-03-26T06:36:46.773 回答
2

我已经在我的回答中解决了这个问题:Prevent special symbols in EditText。您可以根据需要更改正则表达式。

于 2017-07-31T11:35:26.447 回答
1

只需将下面的 xml 行放在 edittext 块内。

android:digits="abc"

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

于 2020-02-12T11:38:25.023 回答
0

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

https://github.com/devapro/NumberWatcher

它仅适用于数字输入,但您可以为任何类型更改它。

于 2020-09-11T09:33:03.287 回答