Android键盘字符验证

Android键盘字符验证,android,validation,keyboard,textwatcher,Android,Validation,Keyboard,Textwatcher,我希望Android应用程序上有一个EditText,以限制允许用户在其中键入的字符 例如,我可能不希望我的用户能够在我的文本框中键入字母“X”。如果他们轻触软键盘上的X键,输入应该被忽略 我得到的印象是,我可以使用TextWatcher来调整可以在文本框中键入哪些字符,但我不太确定最好的方法。在xmlEditText android:digits="abcdef-jklmn" 不要添加不希望用户输入的字符。在xmlEditText android:digits="abcdef-jklmn"

我希望Android应用程序上有一个EditText,以限制允许用户在其中键入的字符

例如,我可能不希望我的用户能够在我的文本框中键入字母“X”。如果他们轻触软键盘上的X键,输入应该被忽略


我得到的印象是,我可以使用TextWatcher来调整可以在文本框中键入哪些字符,但我不太确定最好的方法。

在xml
EditText

android:digits="abcdef-jklmn"

不要添加不希望用户输入的字符。

在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;
}
myEditText.addTextChangedListener(新的TextWatcher(){
public void onTextChanged(字符序列、int start、int before、int count){
s=移除的车轮;
}
更改前文本之前的公共void(字符序列s、int start、int count、int after){
//TODO自动生成的方法存根
}
公共无效后文本已更改(可编辑){
//TODO自动生成的方法存根
}
});
公共静态字符串removeChars(字符串输入){
字符串字符stodelete=“ääëëìëêòùuñ193;ÀÍÍ߿Úëëëëòuùùuùùuùùùù249;
字符串输出=输入;
对于(int i=0;i尝试:

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;
}
myEditText.addTextChangedListener(新的TextWatcher(){
public void onTextChanged(字符序列、int start、int before、int count){
s=移除的车轮;
}
更改前文本之前的公共void(字符序列s、int start、int count、int after){
//TODO自动生成的方法存根
}
公共无效后文本已更改(可编辑){
//TODO自动生成的方法存根
}
});
公共静态字符串removeChars(字符串输入){
字符串字符stodelete=“ääëëìëêòùuñ193;ÀÍÍ߿Úëëëëòuùùuùùuùùùù249;
字符串输出=输入;

对于(inti=0;i使用这个可能会有帮助.)

 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;
    }
}

})

使用这个,可能会有帮助

 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;
    }
}
}))