AndroidアプリケーションのEditTextで、ユーザーが入力できる文字を制限したい。
たとえば、ユーザーがテキストボックスに文字「X」を入力できないようにしたくない場合があります。ソフトキーボードのXキーをタップした場合、入力は単に無視されます。
TextWatcherを使用して、テキストボックスに入力できる文字を調整できるという印象を受けますが、それを行うための最善の方法はよくわかりません。
AndroidアプリケーションのEditTextで、ユーザーが入力できる文字を制限したい。
たとえば、ユーザーがテキストボックスに文字「X」を入力できないようにしたくない場合があります。ソフトキーボードのXキーをタップした場合、入力は単に無視されます。
TextWatcherを使用して、テキストボックスに入力できる文字を調整できるという印象を受けますが、それを行うための最善の方法はよくわかりません。
これをxmlで試してくださいEditText
android:digits="abcdef-jklmn"
ユーザーに入力させたくない文字を追加しないでください。
試してみてください:
myEditText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
s = removeChars(s);
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
public static String removeChars(String input) {
String charactersToDelete = "áàäéèëíìïóòöúùuñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑçÇQWERTYUIOPÑLKJHGFDSAZXCVBNM";
String output = input;
for (int i=0; i<original.length(); i++) {
output.replaceAll(charactersToDelete.charAt(i)+"", "");
}
return output;
}
これを使用してください..
editText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
switch(keyCode)
{
case KeyEvent.KEYCODE_0:
//handle code for pressing 0
break;
default:
break;
}
}
});