我希望将字符限制为0-9、a-z、A-Z和空格键。设置inputtype我可以限制为数字,但是我不知道Inputfilter在文档中查找的方法。
发布于 2010-12-10 01:26:33
我在另一个论坛上找到了这个。工作起来像个冠军。
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
if (!Character.isLetterOrDigit(source.charAt(i))) {
return "";
}
}
return null;
}
};
edit.setFilters(new InputFilter[] { filter });
发布于 2012-09-30 04:20:12
在显示字典建议的安卓版本中,InputFilter
有点复杂。有时会在source
参数中得到一个SpannableStringBuilder
,有时是一个普通的String
。
下面的InputFilter
应该可以工作。请随时改进这段代码!
new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if (source instanceof SpannableStringBuilder) {
SpannableStringBuilder sourceAsSpannableBuilder = (SpannableStringBuilder)source;
for (int i = end - 1; i >= start; i--) {
char currentChar = source.charAt(i);
if (!Character.isLetterOrDigit(currentChar) && !Character.isSpaceChar(currentChar)) {
sourceAsSpannableBuilder.delete(i, i+1);
}
}
return source;
} else {
StringBuilder filteredStringBuilder = new StringBuilder();
for (int i = start; i < end; i++) {
char currentChar = source.charAt(i);
if (Character.isLetterOrDigit(currentChar) || Character.isSpaceChar(currentChar)) {
filteredStringBuilder.append(currentChar);
}
}
return filteredStringBuilder.toString();
}
}
}
发布于 2012-12-14 15:13:02
简单得多:
<EditText
android:inputType="text"
android:digits="0,1,2,3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm" />
https://stackoverflow.com/questions/3349121
复制相似问题