Как ограничить специальные символы в поле Android EditText?
Как ограничить специальные символы в поле Android EditText?
Ответ 1
Вы пытались добавить атрибут android:digits="abcde.....0123456789"
?
Хотя android:digits
указывает, что это числовое поле, для меня действительно работает, чтобы он также принимал буквы, а также специальные символы (проверенные на SDK-7).
Если это не сработает, вам придется реализовать KeyListener
см. http://developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener)
Ответ 2
Просто передайте объект 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 });
}
Ответ 3
Я решил эту проблему в своем ответе: Предотвратить специальные символы в EditText. Вы можете изменить регулярное выражение согласно вашему требованию.