我正在开发Android APP,我想让EditText字段只允许使用3种语言的Alpha字符。
我正在尝试为我的EditText
添加过滤器
firstNameEditText.setFilters(new InputFilter[]{new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
boolean keepOriginal = true;
StringBuilder sb = new StringBuilder(end - start);
for (int i = start; i < end; i++) {
char c = source.charAt(i);
if (isCharAllowed(c)) // put your condition here
sb.append(c);
else
keepOriginal = false;
}
if (keepOriginal)
return null;
else {
if (source instanceof Spanned) {
SpannableString sp = new SpannableString(sb);
TextUtils.copySpansFrom((Spanned) source, start, sb.length(), null, sp, 0);
return sp;
} else {
return sb;
}
}
}
private boolean isCharAllowed(char c) {
Pattern ps = Pattern.compile("^[:alpha: ]+$");
Matcher ms = ps.matcher(String.valueOf(c));
return ms.matches();
}
}});
它正在工作,但问题是:我无法在EditText中写任何空格。
答案 0 :(得分:0)
您可以检查空白字符:Character.isWhitespace(myChar)
所以例如在isCharAllowed
功能中,只需添加
if(Character.isWhitespace(c)) return true;
答案 1 :(得分:0)
在编辑文本中添加此属性。
android:digits="abcdefghijklmnopqrstuvwxyz1234567890 "
此属性不允许使用其他字符。