忽略 Android 上的按键

Ignore key press on Android

当我按 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 应该是这样做的方法...怎么了?

试试这个,我想通了,因为你做了一个 onKeyListener 默认的 return 是 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,

Returns True if the listener has consumed the event, false otherwise.

您也可以在 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 "";
                }
            }
    });