Android 在将字符放在EditText之前如何识别它?

Android 在将字符放在EditText之前如何识别它?,android,android-edittext,Android,Android Edittext,在“编辑文本”中输入文本时,我希望它以“#”开头,然后包含[0-9]和[a-z]。 如果用户尝试输入除“#”以外的第一个字符,则它不应显示在EditText上。在“#”之后,如果用户输入的字符不是[0-9]和[a-z],它也不应该显示在EditText上,尝试在onTextChange()方法中使用textWatcher您可以检查用户为您的用例输入的内容,最好使用textWatcher InputFilter filter = new InputFilter() { public Cha

在“编辑文本”中输入文本时,我希望它以
“#”
开头,然后包含
[0-9]和[a-z]

如果用户尝试输入除
“#”以外的第一个字符
,则它不应显示在
EditText
上。在“#”之后,如果用户输入的字符不是
[0-9]和[a-z]
,它也不应该显示在
EditText

上,尝试在
onTextChange()方法中使用
textWatcher
您可以检查用户为您的用例输入的内容,最好使用
textWatcher

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++) {
            // You will need to handle condition for 1st character should be #.
            if(i == 0)
            {
                if(!source.charAt(i).equals("#"))
                    return "";
            }
            else if (!Character.isLetterOrDigit(source.charAt(i))) {
                return "";
            }
        }
        return null;
    }
};
myEditText.setFilters(new InputFilter[] { filter });
InputFilter过滤器=新的InputFilter(){
公共CharSequence筛选器(CharSequence源、int开始、int结束、,
跨越目的地、内部数据起点、内部数据起点){
for(int i=start;i
参考:


希望这能有所帮助。

您需要按键和向下键事件

public boolean onKey(View v, int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_ENTER:
         /* This is a sample for handling the Enter button */
      return true;
    }
    return false;
}
记住实现OnKeyListener并将您的侦听器设置为YourView.setOnKeyListener(this); 第二种可能性是:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     switch (keyCode) {
     case KeyEvent.KEYCODE_MENU:
        /* Sample for handling the Menu button globally */
        return true;
     }
     return false;
} 

了解有关关键事件的更多信息。

您的代码运行良好,但它允许用户输入更多信息,如果用户先输入,则只在开始时输入。。