【问题标题】:Android - Is there a way to trigger onKeyListener for the soft keyboard?Android - 有没有办法为软键盘触发 onKeyListener?
【发布时间】:2013-08-17 00:23:22
【问题描述】:

开发者参考中提到 OnKeyListener 仅适用于硬件按键事件:

"当一个硬件按键事件被派发到这个视图时,回调的接口定义。这个回调将在按键事件被分配给视图之前被调用。这只对硬件键盘有用;一种软件输入法没有义务触发这个监听器。”

但我想知道是否有办法用软键盘触发它?我知道它确实会在某些设备上触发,但并不一致。

【问题讨论】:

    标签: android


    【解决方案1】:

    2013 年 9 月 12 日更新
    看起来我的旧答案仅适用于某些软键盘,但不适用于其他软键盘。 我尝试四处寻找替代方案,但找不到任何始终如一的工作。最后,我做了一个自定义键盘。幸运的是,我的键盘只需要数字,所以很容易创建。我按照本指南了解如何创建自定义键盘。
    http://www.fampennings.nl/maarten/android/09keyboard/index.htm

    旧答案
    我四处搜索,似乎没有办法用 onKeyListener 来监听软键盘的键。但是,我能够扩展 EditText 并覆盖 onKeyUp() 效果很好。

    public class CustomEditText extends EditText
    {
        public CustomEditText(Context context)
        {
            super(context);
        }
    
        public CustomEditText(Context context, AttributeSet attrs)
        {
            super(context, attrs);
        }
    
        public CustomEditText(Context context, AttributeSet attrs, int defStyle)
        {
            super(context, attrs, defStyle);
        }
    
        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event)
        {
            // Intercept keys here
            return super.onKeyUp(keyCode, event);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 2020-04-21
      • 1970-01-01
      • 2016-02-25
      • 2011-07-24
      • 2017-12-17
      • 2013-03-05
      • 2020-10-30
      • 2016-12-07
      相关资源
      最近更新 更多