Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 捕获软键盘/屏幕键盘的特殊按键(shift、alt)_Android - Fatal编程技术网

Android 捕获软键盘/屏幕键盘的特殊按键(shift、alt)

Android 捕获软键盘/屏幕键盘的特殊按键(shift、alt),android,Android,我试图捕捉shift键或alt键的按键,它似乎与物理键盘配合得很好。不幸的是,当我用屏幕键盘测试相同的代码时,它根本没有响应(我尝试了2.1、4.03模拟器和2.3物理设备) 这似乎是一个平台问题,可能没有解决办法,但作为最后的努力,我想在这里发布这个问题,看看是否有人找到了(我愿意接受任何想法) 谢谢 编辑以澄清我的观点:我尝试在“if(event.getAction()==KeyEvent.ACTION_DOWN)”行上放置一个断点,如果我按下物理键盘的shift键,它将始终停止,但当我按下

我试图捕捉shift键或alt键的按键,它似乎与物理键盘配合得很好。不幸的是,当我用屏幕键盘测试相同的代码时,它根本没有响应(我尝试了2.1、4.03模拟器和2.3物理设备)

这似乎是一个平台问题,可能没有解决办法,但作为最后的努力,我想在这里发布这个问题,看看是否有人找到了(我愿意接受任何想法)

谢谢


编辑以澄清我的观点:我尝试在“if(event.getAction()==KeyEvent.ACTION_DOWN)”行上放置一个断点,如果我按下物理键盘的shift键,它将始终停止,但当我按下屏幕键盘的shift键时,它永远不会停止。所以,问题是onKey并不是针对onScreenKeyboard的所有按键执行的

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mEditText1 = (EditText) findViewById(R.id.editText1);

    mEditText1.setOnKeyListener( new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {

            if (event.getAction() == KeyEvent.ACTION_DOWN)
            {
                switch (keyCode)
                {
                    case KeyEvent.KEYCODE_DPAD_CENTER:
                    case KeyEvent.KEYCODE_ENTER:
                        Toast.makeText(IMETestActivity.this, "Enter was consumed",
                                Toast.LENGTH_SHORT).show();
                        return true;

                    case KeyEvent.META_SHIFT_LEFT_ON:
                    case KeyEvent.META_SHIFT_RIGHT_ON:
                        Toast.makeText(IMETestActivity.this, "Meta Shift was consumed",
                                Toast.LENGTH_SHORT).show();
                        return true;

                    case KeyEvent.KEYCODE_SHIFT_LEFT:
                    case KeyEvent.KEYCODE_SHIFT_RIGHT:
                        Toast.makeText(IMETestActivity.this, "Shift was consumed",
                                Toast.LENGTH_SHORT).show();
                        return true;

                    default:
                        break;
                }
            }

            return false;
        }
    });

}

每当按下某个键时,请尝试记录键代码,以确保事件正在注册。如果是,只需将该代码添加到switch语句中即可


例如,onKeyListener开头的System.out.println(keyCode)之类的内容。您可以使用LogCat查看输出。

我尝试在“if(event.getAction()==KeyEvent.ACTION_DOWN)”行上放置一个断点,如果我按下物理键盘的shift键,它将始终停止,但当我按下屏幕键盘的shift键时,它永远不会停止。所以,问题是onKey并不是针对onScreenKeyboard的所有按键执行的。