获取在EditText中按下的键

Kan*_*nan 4 android

我想知道哪个键被按下了EditText.例如,如果a按下,我想将值设为'a'.我怎样才能做到这一点?

kco*_*ock 5

您可以onKeyListener()在EditText上设置一个,并以这种方式检索KeyCode.例如:

editText.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        switch(keyCode) {
            case KeyEvent.KEYCODE_0:
                //handle code for pressing 0
                break;
            default:
                break;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

在您的switch陈述中,只需处理您需要的任何密钥代码.完整列表可以在KeyEvent常量中找到.

编辑:请记住,对于验证和类似的事情,如尼古拉斯所提到的,TextWatcher可能是一个更好的解决方案,如果您需要知道输入了什么字符(例如'A'与'a',就像你一样必须处理关键监听器中shift键是否处于活动状态的逻辑.如果您只需要知道按下了什么键,我建议使用OnKeyListener.

  • 您还可以使用`int key = event.getUnicodeChar(event.getMetaState())`来提供精确的unicode字符,尊重修饰键的状态(alt,shift等) (2认同)
  • 仅适用于硬件键盘,不适用于软键盘. (2认同)