EditText仅包含文本,数字和下划线,如Instagram ID

时间:2016-04-28 06:43:46

标签: android android-edittext

我有一项功能,我必须只验证字符,数字和下划线(没有任何其他特殊字符),就像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" />

2 个答案:

答案 0 :(得分: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_"
/>

答案 1 :(得分:0)

  

您可以通过编程方式使用以下代码

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

希望这会对你有所帮助