我有一项功能,我必须只验证字符,数字和下划线(没有任何其他特殊字符),就像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" />
答案 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 });
希望这会对你有所帮助