我想要一个editText,只允许从A到z的文本输入,没有数字或其他字符。我发现我必须使用InputFilter,但我不明白这段代码是如何工作的。
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});
答案 0 :(得分:3)
您发布的代码会在EditText字段中添加自定义过滤器。它检查输入的字符是否不是数字或数字然后,如果是,则返回一个空字符串“”。那段代码在这里:
if (!Character.isLetterOrDigit(source.charAt(i))) {
return "";
}
根据您的需要,您需要稍微更改代码以检查字符是否不是字母。因此,只需将调用更改为静态Character对象即可使用isLetter()方法。这将是这样的:
if (!Character.isLetter(source.charAt(i))) {
return "";
}
现在,任何不是字母的内容都会返回一个空字符串。
答案 1 :(得分:0)
实际上没有这样做,但请检查Androids NumberKeyListener。你可以在这里找到它的源代码: http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/text/method/NumberKeyListener.java.htm
它与你需要的完全相反,但这应该是一个足够好的起点。