我在项目中使用输入过滤器作为edittext。但条件如下:
1)edittext的第一个字符应该只是一个字母 2)从第二个字符开始,它可以是字母,数字,下划线或点
我尝试了以下内容:
filter_username = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
boolean keepOriginal = true;
sb = new StringBuilder(end - start);
for (int i = start; i < end; i++) {
char c = source.charAt(i);
if (isCharAllowed2(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 isCharAllowed2(char c) {
if(sb.length()==0)
return Character.isLetter(c);
else
return (Character.isLetterOrDigit(c)||c=='_'||c=='.');
}
};
我将过滤器设置为: txtusername.setFilters(new InputFilter [] {filter_username});
问题是我无法从第二个字符开始输入字母或数字或所需的字符。我如何解决这个问题?