zoukankan      html  css  js  c++  java
  • Android 输入法截取key优先于view

    为了验证编写了个例子

    首先是输入法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class RemoteKeyboard extends InputMethodService  {
     
      @Override public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (processKey(event, 0 != event.getRepeatCount()))
                return true;
            return super.onKeyDown(keyCode, event);
        }
     
        @Override public boolean onKeyUp(int keyCode, KeyEvent event) {
            if (processKey(event, true))
                return true;
            return super.onKeyUp(keyCode, event);
        }
     
        private boolean processKey(KeyEvent event, boolean doIt) {
             Log.e("======= " ," ============ processKey");
             return false;
        }
    }


    其次是app view

    1
    2
    3
    4
    5
    6
    7
    final TextView et1 = (TextView)findViewById(R.id.editText1);
    et1.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
            Log.e("====================","====OnKeyListener ");
        }


    运行程序打印

    ============================ : ============ processKey

    ==================== :====OnKeyListener

    ============================ : ============ processKey

    ==================== :====OnKeyListener

    第一遍应该是KeyDown, 第二遍应该是 KeyUp, 说明Android 输入法截取key优先于view

    又试验了一下改写system/usr/keychars/Generic.kcm

    把 B 改为

    key B {
    base: 'b' fallback DPAD_CENTER
    }

    在一个不可编辑框, log 如下

    12-23 05:18:09.093 118 118 E ============================ : ============ processKey

    12-23 05:18:09.094 118 118 E ============================ : ============ processKey
    12-23 05:18:09.163 118 118 E ============================ : ============ processKey
    12-23 05:18:09.163 118 118 E ============================ : ============ processKey

    说明b没有被 accept,而后又调用了 DPAD_CENTER

    在一个可编辑框,b被accept, log 如下

    ============================ : ============ processKey

    ============================ : ============ processKey

    说明没有调用 fallback

    如果改法如下

    key B {
    base: fallback DPAD_CENTER
    }

    在一个可编辑框也要打4行log, 说明 fallback被调用了

    结伴旅游,一个免费的交友网站:www.jieberu.com

    推推族,免费得门票,游景区:www.tuituizu.com

  • 相关阅读:
    毕业设计(高校网上作业提交系统)开发记录(15)
    毕业设计(高校网上作业提交系统)开发记录(14)
    毕业设计(高校网上作业提交系统)开发记录(13)
    毕业设计(高校网上作业提交系统)开发记录(12)
    毕业设计(高校网上作业提交系统)开发记录(11)
    毕业设计(高校网上作业提交系统)开发记录(10)
    毕业设计(高校网上作业提交系统)开发记录(9)
    毕业设计(高校网上作业提交系统)开发记录(8)
    Java实现沙箱测试环境支付springboot
    Java面试宝典2019
  • 原文地址:https://www.cnblogs.com/rabbit-bunny/p/4192839.html
Copyright © 2011-2022 走看看