【问题标题】:How to restrict special characters from an Android EditText field?如何限制 Android EditText 字段中的特殊字符?
【发布时间】:2011-03-24 01:45:26
【问题描述】:

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

【问题讨论】:

    标签: android android-edittext


    【解决方案1】:

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

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

    【讨论】:

    • 这种方法在 ICS 设备上使用 android:imeOptions="actionNext" 时也会给我带来问题。 “下一步”按钮不显示!!!
    • 如果用户想使用英语以外的其他语言,应该怎么做?
    • 这是不区分大小写的还是敏感的?
    【解决方案2】:

    只需将 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 });
    
         }
    

    【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
    • 显然链接的解决方案显示了如何限制 EditText 中的特殊字符。这解决了我的问题,与问题中提到的相同。
    • 好的,如果它已经被接受的答案回答了,你就将它标记为重复。
    • 问题不同。有人被要求解决 Android 小部件属性中的错误,而这个问题是关于实现需求的。但这两个问题的解决方案是相同的。它们不能(不应该)被标记为重复。
    【解决方案4】:

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

    android:digits="abc"
    

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

    【讨论】:

      【解决方案5】:

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

      https://github.com/devapro/NumberWatcher

      它只是数字输入的实现,但您可以为任何类型更改它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-10
        • 2018-10-25
        • 1970-01-01
        相关资源
        最近更新 更多