Android:将EditText限制为任何语言的字母数字

时间:2011-08-01 08:19:44

标签: android android-edittext

我想允许用户仅使用字母数字字符创建用户名,但字母字符可以是用户母语中的任何字符。必须可以将输入限制为仅作为母语字母表一部分的字符,或者如果语言中没有字母(如中文),则限制为通常被视为非符号的字符(象征性的字符是问号,冒号等。)

使用inputType似乎会产生问题,因为将其设置为“text”实际上也允许键盘显示符号。

1 个答案:

答案 0 :(得分:2)

EditText editText = (EditText)findViewById(R.id.your_edit_text); 

editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
    // TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
    for(int i=0;i<arg0.toString().length();i++){
        if(arg0.toString().charAt(i)=='a char you hate')
            //Show an error and change the contents of arg0
    }
}
});

<强> EDITED

我已经编辑了一点答案,因为在之前的版本中假设他改变了最后一个字符。但是,即使他在字符串的中间插入了一个字符,也不会调用onTextChanged