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
最新文章
- 第一弹:Java 中创建对象的4种方式
- java日期和字符串的相互转换
- php将数据库导出成excel的方法
- [Everyday Mathematics]20150118
- 给jdk写注释系列之jdk1.6容器(12)-PriorityQueue源码解析
- 如何在一台机器上安装两个MYSQL数据库
- 数据结构之单链表,c#实现
- js数据显示在文本框中(页面加载显示和按钮触动显示)
- matlab中axis的使用
- HTML: width,height
- PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法
- Windows环境下,从零开始搭建Nodejs+Express+Ejs框架(一)---安装nodejs
- Swift3的playground中对UI直接测试支持的改变
- 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(一)
- C语言实例:结构体
- C# 动态生成的按钮及定义按钮的事件的代码
- Android内存优化(一)Dalvik虚拟机和ART虚拟机对比
- 潭州课堂25班:Ph201805201 tornado 项目 第四课 增加用户注册登录(课堂笔记)
- Software Engineer Title Ladder
- koa中返回404并且刷新后才正常的解决方案
热门文章
- html中设置height=100%无效的问题
- 网络爬虫之HTTPClient
- ajax使用jsonp跨域调用webservice error错误信息";readyState";:4,";status";:200,";statusText";:";success";
- Vue 创建多页面应用模式
- react面试题——理解setState(源码object.assign)
- Tomcat报java.io.IOException: Broken pipe错误
- mock.js模拟ajax数据请求
- 图像语义分割出的json文件和原图,用plt绘制图像mask
- python数字图像处理(二)关键镜头检测
- 闲着没事写点啥之springmvc梳理