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

时间:2010-08-02 06:55:45

标签: android android-edittext

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

5 个答案:

答案 0 :(得分:42)

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

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

答案 1 :(得分: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 });

     }

答案 2 :(得分:1)

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

答案 3 :(得分:1)

只需在edittext块中的xml行下面放置即可。

android:digits="abc"

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

答案 4 :(得分:0)

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

https://github.com/devapro/NumberWatcher

这是仅用于数字输入的实现,但是您可以更改任何类型的数字。