仅将EditText限制为文本(A-z)

时间:2011-10-16 12:16:40

标签: java android android-edittext

我想要一个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}); 

2 个答案:

答案 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

它与你需要的完全相反,但这应该是一个足够好的起点。