当我从0,1或2按下不同的键时忽略按键事件应该很容易,但是这段代码对我不起作用:
txtInput.setOnKeyListener(new EditText.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_0 ||
keyCode==KeyEvent.KEYCODE_1 ||
keyCode==KeyEvent.KEYCODE_2 ) {
return false;
}else {
return true;
}
}
});
返回true应该是这样做的方法......出了什么问题?
答案 0 :(得分:3)
试试这个,我想出来了,因为你制作了一个onKeyListener
,默认回报是false
,所以如果它是false
并显示数字,那么就改变它到true
,它不会;)
etpew.setOnKeyListener(new EditText.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_0 ||
keyCode==KeyEvent.KEYCODE_1 ||
keyCode==KeyEvent.KEYCODE_2 ) {
Toast.makeText(MainActivity.this, "NO!", Toast.LENGTH_SHORT).show();
return true;
}else {
return false;
}
}
});
作为View.OnKeyListener
Documentation says,
<强>返回强> 如果侦听器已使用该事件,则为True,否则为false。
您也可以在EditText
<EditText android:inputType="text" android:digits="3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm" />
你也可以尝试这种方法,但第一种方法更好......你可以使用InputFilter
,如下所示:
etpew.setFilters(new InputFilter[]{
new InputFilter() {
public CharSequence filter(CharSequence src, int start,
int end, Spanned dst, int dstart, int dend) {
if (src.toString().matches("[a-zA-Z3-9 ]*")) //I've removed the 0,1,2 but if you want to control more stuff just add on this method.
{
return src;
}
return "";
}
}
});