2011-08-01 16 views
0

ユーザーが英数字のみを使用してユーザー名を作成できるようにしたいが、アルファベット文字はユーザーの母国語のいずれの文字でもかまいません。入力を母国語のアルファベットの一部である文字のみに制限することが可能でなければならず、また、中国語のような言語でアルファベットが存在しない場合、通常は非記号的(シンボリック文字は疑問符、コロンなど)。Android:EditTextを任意の言語の英数字に制限する

inputTypeを使用すると、文字列を「テキスト」に設定すると実際にキーボードにもシンボルを表示できるため、問題が発生しているようです。

答えて

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は文字列の真ん中に文字を挿入したとしても呼び出されます。

+0

回答を編集しました –

関連する問題