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

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

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

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

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

【问题讨论】:

    标签: android keyboard listener keylistener


    【解决方案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 只监听软键而不是键盘
      猜你喜欢
      • 2018-04-15
      • 2014-10-08
      • 1970-01-01
      • 2015-03-18
      • 2020-06-11
      • 2011-03-03
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多