如何监听软键盘的按键?

9

我需要一个监听器来识别软键盘/屏幕键盘中的按键。

我尝试使用addtextchangelistener textwatcher,但它会在用户粘贴文本时也显示更改结果。

我只需要识别用户按下的按键。

是否有可能检测到按键按下。

4个回答

3

当使用KeyEvent类和相关API处理键盘事件时,您应该预期这些键盘事件仅来自硬件键盘。 您永远不应该依赖于从软输入法(屏幕键盘)接收任何按键事件。

请参见:处理键盘操作


4
这个人在询问软键盘,而不是硬件键盘。 - user1506104
你永远不能依赖于从软输入法(屏幕键盘)接收任何按键事件。 - phnmnn

3

请查看此keyevent参考文档,并使用以下代码来识别用户按下了哪个按键。

  @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) 
    {
         // Do Code here
    }
else if(keyCode == KeyEvent.KEYCODE_0) 
   {

   }
else if(keyCode == KeyEvent.KEYCODE_1) 
   {

   }
return super.onKeyDown(keyCode, event); }

2
只有在EditText中没有输入任何文本并且我按下反斜杠按钮时才起作用。 - narancs
2
这可能行不通,因为软键盘不一定要发送KeyEvents(有些键盘根本不发送,Gboard仅发送ASCII键)。 - Lev Leontev

1

如果这个可以帮到你,看一下。

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 1) {          
            finish();
            return true;    
        }
        return super.onKeyDown(keyCode, event);
    }

0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // Do Code here
    }
    return super.onKeyDown(keyCode, event);
}

这是为了识别后退键的按下。 - arnp
你可以识别键盘上的任何可用键。 - Krishnakant Dalal
1
我已经尝试过onKeyDown只监听软键盘而不是物理键盘。 - arnp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接