如何听软键盘中的按键?

Posted

技术标签:

【中文标题】如何听软键盘中的按键?【英文标题】:How to listen the keypress in the soft keyboard? 【发布时间】:2012-05-23 21:35:00 【问题描述】:

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

我尝试使用 addtextchangelistener textwatcher 但这一个给出了很好的结果但是当一些文本被粘贴到它时它也会显示更改。

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

有什么方法可以检测到按键。

【问题讨论】:

【参考方案1】:

查看此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); 

【讨论】:

只有在没有文本输入到 EditText 并且我按下反斜杠按钮时才有效 这可能行不通,因为软件键盘不必发送 KeyEvents(有些键盘不发送,Gboard 只发送 ASCII 键)。【参考方案2】:

当使用 KeyEvent 类和相关处理键盘事件时 API,您应该期望此类键盘事件仅来自 硬件键盘。 您不应该依赖接收关键事件 软输入法(屏幕键盘)上的任意键

见:Handling Keyboard Actions

【讨论】:

这家伙问的是软键盘,而不是硬件键盘 您不应该依赖接收软输入法(屏幕键盘)上任何键的键事件【参考方案3】:

看看这个如果能帮到你。

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

【讨论】:

【参考方案4】:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
    if (keyCode == KeyEvent.KEYCODE_BACK) 
        // Do Code here
    
    return super.onKeyDown(keyCode, event);

【讨论】:

这是为了识别后退键。 您可以识别键盘上的任何可用键。 我已经试过 onKeyDown 只监听软键而不是键盘

以上是关于如何听软键盘中的按键?的主要内容,如果未能解决你的问题,请参考以下文章

怎样设置软键盘

Android - 获取键盘按键

如何使用 UIKeyboardImpl.isInHardwareKeyboardMode

Android App监听软键盘按键的三种方式

手机端浏览器中的html搜索框如何响应软键盘搜索按钮事件?

android如何实现监听软键盘收起按钮的点击事件