【问题标题】:EditText with only text, digit and underscore like Instagram IDEditText 只有文本、数字和下划线,如 Instagram ID
【发布时间】:2016-04-28 15:44:20
【问题描述】:

我有一个功能,我必须只验证字符、数字和下划线(没有任何其他特殊字符),就像 Instagram ID。

我尝试了很多。甚至我在 xml 中使用了 digit 属性,在我的 java 类中也使用了 InputFilter。

真正的问题是什么?

1.) 在某些设备上,它可以完美运行

2.) 在某些设备中,当我按下空格键时,它会自动作为键盘中的后按,这意味着它会删除最后一个字符。

请建议我一个合适的解决方案来开发 Instagram ID 等功能。

非常感谢 提前

我的xml在这里,

<EditText
    android:id="@+id/edUniqueID"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="45dp"
    android:digits="_1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
    android:gravity="center"
    android:inputType="text"
    android:maxLength="15"
    android:padding="12dp"
    android:singleLine="true"
    android:textColor="@color/white"
    android:textSize="16sp" />

【问题讨论】:

标签: android android-edittext


【解决方案1】:

试试这个。

<EditText 
  android:inputType="text" 
  android:digits="0,1,2,3,4,5,6,7,8,9,qwertzuiopasdfghjklyxcvbnm,_" 
/>

编辑:

Without Comma (,) you can use as this.

<EditText 
  android:inputType="text" 
  android:digits="0123456789qwertzuiopasdfghjklyxcvbnm_"
/>

【讨论】:

  • 它工作正常,但它还包括 EditText 中的“,”(昏迷)。
  • @HarshPatel 如果您需要包含逗号,请保留它,否则您也可以使用此android:digits="0123456789qwertzuiopasdfghjklyxcvbnm_"
  • @ jaydroider 如果我在没有昏迷的情况下使用它会遇到同样的问题。
【解决方案2】:

您可以使用以下代码以编程方式实现此功能

InputFilter filter = new InputFilter() {
        public CharSequence filter(CharSequence source, int start, int end,
                Spanned dest, int dstart, int dend) {
            for (int i = start; i < end; i++) {
                if (!Character.isLetterOrDigit(source.charAt(i))
                        || !Character.toString(source.charAt(i))
                                .equals("_")
                        || !Character.toString(source.charAt(i))
                                .equals("-")) {
                    return "";
                }
            }
            return null;
        }
    };

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

希望对你有帮助

【讨论】:

  • 你有什么设备???只要给我你的设备的完整描述。我有摩托罗拉 G3
  • 你能告诉我你的设备版本吗?
  • 实际上它在较新的 Android(如 4.0+)中效果不佳。
猜你喜欢
  • 2013-03-31
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 2020-02-23
  • 2015-02-27
相关资源
最近更新 更多