首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在安卓系统中使用InputFilter限制EditText中的字符?

如何在安卓系统中使用InputFilter限制EditText中的字符?
EN

Stack Overflow用户
提问于 2010-07-28 08:49:34
回答 19查看 177.6K关注 0票数 181

我希望将字符限制为0-9、a-z、A-Z和空格键。设置inputtype我可以限制为数字,但是我不知道Inputfilter在文档中查找的方法。

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2010-12-10 01:26:33

我在另一个论坛上找到了这个。工作起来像个冠军。

代码语言:javascript
复制
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 });
票数 193
EN

Stack Overflow用户

发布于 2012-09-30 04:20:12

在显示字典建议的安卓版本中,InputFilter有点复杂。有时会在source参数中得到一个SpannableStringBuilder,有时是一个普通的String

下面的InputFilter应该可以工作。请随时改进这段代码!

代码语言:javascript
复制
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();
        }
    }
}
票数 145
EN

Stack Overflow用户

发布于 2012-12-14 15:13:02

简单得多:

代码语言:javascript
复制
<EditText
    android:inputType="text"
    android:digits="0,1,2,3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm" />
票数 109
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3349121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档