Android : 允许用户在 EditText 中只添加字母和特殊字符
Android : Allow User to add only alphabets and special characters in an EditText
我希望用户在 EditText 中只输入字母和特殊字符。一种方法是在 EditText 的 "android:digits" 标记中添加所有字母表和所有特殊字符。但我认为这不是一个好方法。
有什么更好的实现方法吗?
查看 EditText input type docs 以查看是否有任何这些满足您的要求。
如果不是,使用正则表达式检查来自 EditText
的输入字符串是否符合您要求的格式是个好主意。
我使用 InputFilter 只屏蔽数字:
private static InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String blockCharacterSet = "1234567890";
if (source != null && blockCharacterSet.contains(("" + source))) {
return "";
}
return null;
}
};
然后应用过滤器:
edittext.setFilters(new InputFilter[] { filter });
在 xml 内的 edittext 中设置 android:digits="abcdefghijklmnopqrstuvwxyz?/>,<.:";'{}[]\|)(*&^%$#@!
~+=-_ etc"` 属性。
注意:- 请在键盘中添加所有可用的特殊字符代替等
我希望用户在 EditText 中只输入字母和特殊字符。一种方法是在 EditText 的 "android:digits" 标记中添加所有字母表和所有特殊字符。但我认为这不是一个好方法。
有什么更好的实现方法吗?
查看 EditText input type docs 以查看是否有任何这些满足您的要求。
如果不是,使用正则表达式检查来自 EditText
的输入字符串是否符合您要求的格式是个好主意。
我使用 InputFilter 只屏蔽数字:
private static InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String blockCharacterSet = "1234567890";
if (source != null && blockCharacterSet.contains(("" + source))) {
return "";
}
return null;
}
};
然后应用过滤器:
edittext.setFilters(new InputFilter[] { filter });
在 xml 内的 edittext 中设置 android:digits="abcdefghijklmnopqrstuvwxyz?/>,<.:";'{}[]\|)(*&^%$#@!
~+=-_ etc"` 属性。
注意:- 请在键盘中添加所有可用的特殊字符代替等