如何限制Android EditText字段中的特殊字符?
答案 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
这是仅用于数字输入的实现,但是您可以更改任何类型的数字。