如何限制Android EditText字段中的特殊字符?
如何限制Android EditText字段中的特殊字符?
android:digits="abcde.....0123456789"
属性吗?
尽管 android:digits
指定它是一个数字字段,但我设置它也可以接受字母和特殊字符(在 SDK-7 上测试通过)。KeyListener
请参见:http://developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener)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 });
}
这是一个包含空格的 Kotlin 版本:
private val userNameFilter =
InputFilter { source, start, end, dest, dStart, dEnd ->
for (i in start until end) {
if (!Character.isLetterOrDigit(source[i]) && !Character.isWhitespace(source[i])) {
return@InputFilter ""
}
}
null
}
android:digits="abc"
https://github.com/devapro/NumberWatcher
这只是针对数字输入的实现,但您可以将其更改为任何类型。