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;
}
了解有关关键事件的更多信息。您的代码运行良好,但它允许用户输入更多信息,如果用户先输入,则只在开始时输入。。