How to restrict special characters from an Android EditText field?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Have you tried adding the android:digits="abcde.....0123456789"
attribute?
Although the android:digits
specify that it is a numeric field, it does work for me to set it to accept letters as well, and special characters as well (tested on SDK-7).
If this doesn't work then you'll have to implement KeyListener
see: http://developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener)
回答2:
Just pass the EditText object to this method. Also add the values that is to be blocked in the variable 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:
I have solved this problem in my answer: Prevent special symbols in EditText. You can change the regex as per your requirement.