在 Android 虚拟键盘上捕获 KeyEvent

Posted

技术标签:

【中文标题】在 Android 虚拟键盘上捕获 KeyEvent【英文标题】:Capturing KeyEvent On Android Virtual keyboard 【发布时间】:2012-09-18 14:24:52 【问题描述】:

在输入 EditText 期间,有什么方法可以捕获 android 虚拟键盘上的键事件?

我想捕获 deleteKey 事件?

【问题讨论】:

常规按键监听器可能是来自虚拟键盘的处理 KeyEvents。你试过了吗? 【参考方案1】:

这是一段很好的示例代码:

 @Override
    public boolean dispatchKeyEvent(KeyEvent e) 
        if (e.getKeyCode() == KeyEvent.KEYCODE_FORWARD_DEL)  
/*Just switch out keycode if KEYCODE_FORWARD_DEL if its not the correct one*/
            Toast.makeText(MainActivity.this, "YOU CLICKED Delete KEY",
                    Toast.LENGTH_LONG).show();
            return true;
        
        Toast.makeText(MainActivity.this, "Didnt work", Toast.LENGTH_SHORT)
                .show();
        return super.dispatchKeyEvent(e);
    ;

我放了祝酒词,这样您就可以测试是否按下了键。 开发者网站here 也有很多非常好的信息。

【讨论】:

【参考方案2】:

此代码运行良好。请试一试。

public class MainActivity extends Activity implements View.OnKeyListener 
......
    public boolean onKey(View v, int keyCode, KeyEvent event) 
        // TODO Auto-generated method stub
        // TODO Auto-generated method stub
        Log.e("setOnKeyListener", "Key Code:" + String.valueOf(keyCode));
        if(event.getAction() != KeyEvent.ACTION_DOWN) return true;
        Log.e("setOnKeyListener-ACTION_DOWN", "Key Code:" + String.valueOf(keyCode));
        return false;
    

【讨论】:

以上是关于在 Android 虚拟键盘上捕获 KeyEvent的主要内容,如果未能解决你的问题,请参考以下文章

Android - 在画布上创建虚拟键盘

移动web 怎么捕获虚拟键盘弹出和关闭事件

当虚拟键盘出现在本机反应中时如何自动向上滚动屏幕(在android上)

如何使用 JavaFXPorts 在 android 中启用 JavaFX 虚拟键盘

Android 3:模拟虚拟钢琴键盘的软键盘行为

android popupwindow在虚拟键盘上方