【问题标题】:catching the "OK" button vs pressing "round-arrow" on EditText in Android在 Android 的 EditText 上捕捉“确定”按钮与按“圆形箭头”
【发布时间】:2025-11-30 09:30:01
【问题描述】:

我有一个带有 android:inputType="phone" 键盘的 EditText。这个键盘上有一个"OK"。我喜欢按下 OK btn。但是我不知道关键事件。我想使用这样的代码:

 setOnKeyListener(new OnKeyListener()
            {
                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:
                            case KeyEvent.?????????? <- this one please

                                return true;
                            default:
                                break;
                        }
                    }
                    return false;
                }
            });

我希望代码不同于按“圆箭头”!

我检查了文档中的所有关键事件,但找不到任何东西。 谢谢

【问题讨论】:

  • 我不确定这是否可以做到,但请看一下[如何在软键盘打开 android 时捕获关键事件?][1]。 [1]:*.com/questions/6883334/…
  • 您可以在事件的 keyCode 上使用简单的System.out.println,并在文档中查看它的相对常量。
  • 如果我只是放一个日志,我会得到 66,这是否意味着它在所有 Android 手机上都是 66,还是会有所不同? Ps Draiken,我不确定您所说的“相对常数”是什么意思?

标签: android keyevent


【解决方案1】:

“确定”按钮通常与完成输入相关联,与其他按钮不同。使用setOnEditorActionListener 捕捉它:

editText.setOnEditorActionListener( new OnEditorActionListener()
    {
      public boolean onEditorAction( TextView v, int actionId, KeyEvent event )
      {
        // Do what you want to do here
      }
    });

【讨论】:

  • 谢谢,我试过了,但由于某种原因,没有任何效果了。即其他侦听器没有反应,并且 setOnEditorActionListener 似乎没有捕捉到任何东西(它甚至没有在正文中打印 Log.i)