view-activity跟控件在onkey事件上的传递关系
android 中Activity跟View对于键盘的监听,主要有以下几个方法
//按键按下 public boolean onKeyDown(int keyCode, KeyEvent event) {} //按键弹起 public boolean onKeyUp(int keyCode, KeyEvent event) {} //常按 public boolean onKeyLongPress(int keyCode, KeyEvent event) {}
我们今天先看的就是按下、弹起两个事件,在activity跟view两者之间的传递关系。
我们先看如下的测试代码
首先是自定义view,重写了onkeyDown 跟onkeyUp两个方法
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubboolean a = super.onKeyDown(keyCode, event);Log.e("123", "view_onkeydown|a===" + a);return a;}@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) {// TODO Auto-generated method stubboolean a = super.onKeyUp(keyCode, event);Log.e("123", "view_onkeyup|a==" + a);return a;}
接下来是在activity中重写了上面两个方法
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubLog.e("123", "activity_onkeydown");return super.onKeyDown(keyCode, event);}@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) {// TODO Auto-generated method stubLog.e("123", "activity_onkeyup");return super.onKeyUp(keyCode, event);}
然后我们打下log
1.当焦点不在自定义view上的时候
1 00-01 08:59:54.755: E/123(9250): activity_onkeydown2 01-01 08:59:54.951: E/123(9250): activity_onkeyup3 01-01 08:59:55.757: E/123(9250): activity_onkeydown4 01-01 08:59:55.964: E/123(9250): activity_onkeyup
2.当焦点在view上的时候
1 01-01 09:01:14.914: E/123(9250): view_onkeydown|a===true2 01-01 09:01:15.043: E/123(9250): view_onkeyup|a==false3 01-01 09:01:15.044: E/123(9250): activity_onkeyup4 01-01 09:01:16.451: E/123(9250): view_onkeydown|a===true5 01-01 09:01:16.614: E/123(9250): view_onkeyup|a==false6 01-01 09:01:16.615: E/123(9250): activity_onkeyup
总结:
从上面的log结果,我们能得到以下两个知识点
1.控件对键盘的监听,只有当控件获得焦点的时候,才能够起效果,activity对控件的监听是一直存在的
2.如果控件获得了焦点,那么监听顺序是,先view,后activity
3.如果view返回为ture,那么activity相应的监听就不会接受到按键事件
转载于:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_onkey_15915113.html
view-activity跟控件在onkey事件上的传递关系相关推荐
- [习题]如何触发 GridView 身体里面的「子控件」的事件 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充)...
[习题]如何触发 GridView 身体里面的「子控件」的事件?#1 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充) 這個範例是要補充書本「上集」(ASP.NET專題實務) ...
- Repeater控件的ItemDataBound事件
Repeater控件的ItemDataBound事件:在项被绑定数据后触发. 下面的例子来自msdn,不过我把前台和后台分开了. 前台是: View Code <%@ Page Language ...
- .net数据控件的冒泡事件
一.理解事件冒泡 在ASP.NET框架包含三个支持事件冒泡的标准控件:Repeater.DataList和DataGrid控件.这些控件可以让你捕获其子控件的时 间.当子控件产生一个事件时,事件就&q ...
- 为.net中的ListBox控件添加双击事件
我在用dotnet做一个项目的过程中,遇到了一个ListBox的问题:通过在一个ListBox中双击,把选中的项添加到另一个ListBox中,但ListBox控件本身并没有该事件,那么如何实现呢?我就 ...
- asp.net panel 加html,ASP.NET 页面中动态增加的控件、添加事件
要求:页面上有一个Add按钮,每点击一次该按钮,页面上动态创建一个WebPartZone! 提醒:WebPartZone只能在OnInit或之前才能创建,否则报异常! 大家都知道,按钮的点击事件是在R ...
- AspxCallBack控件的CallBack事件
AspxCallBack控件的CallBack事件 AspxCallBack控件的CallBack事件 1)不能弹出窗口: 2)取AspxDropDownList控件客户端的值使用 ddl.Clien ...
- 谨慎注意WebBrowser控件的DocumentCompleted事件
引言 WebBrowser控件的DocumentCompleted事件一般就被认定为是在页面完全加载完毕后产生,而注释中也是这么写的: 但事实却并非如此. 首先它不一定会在完全加载完毕时才触发,有时就 ...
- asp.net Login控件基本属性及事件说明
原文:asp.net Login控件基本属性及事件说明 Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径. Login系列控件包含下列控件: Login 登录控件 ...
- [习题].FindControl()方法 与 PlaceHolder控件 #2(动态加入「子控件」的事件)
这是我的文章备份,有空请到我的网站走走, http://www.dotblogs.com.tw/mis2000lab/ 才能掌握我提供的第一手信息,谢谢您. http://www.dotblogs.c ...
最新文章
- tf.keras.activations.softmax 激活函数 示例
- 播放视频一会,出错并自动关闭
- java com dll_通过COM组件方式实现java调用C#写的DLL文件
- JavaScript==比较的规则
- Dell PowerEdge - 如何配置 iDRAC9 和生命周期控制器网络 IP
- javascript 以“年-月-日 时:分:秒”格式显示当前时间
- 前端开发面试题-JavaScript(二)
- 多线程访问导致崩溃一例
- git 取消merge_git 入门教程之备忘录[译]
- MySQL-存储过程-高效清理数据
- t检验的几种应用案例
- 1000: 从今天开始入坑C语言
- ei指什么_今天说一下EI是什么
- Android Hotfix 新方案——Amigo 源码解读
- pc构件生产线及设备_PC构件生产线全套设备清单
- oracle数据库数据误删除恢复方法
- 跑步适合戴哪种耳机不掉?专业跑步耳机推荐
- 重载测试打印 - GoogleTest()
- Web页面布局上的幽灵事件 -- 外边距合并折叠解惑
- Java、显示分期还贷时间表
热门文章
- 【CodeForces - 574B】Bear and Three Musketeers (枚举边,思维,优秀暴力)
- python 问题集
- java自定义线程_Java自定义线程池详解
- 苏宁css代码生成器,【前端】06 - rem + less + 媒体查询 - 制作苏宁首页
- Android常见命令
- MyEclipse 10.5 安装SVN插件
- Oracle中通过游标执行带参数的存储过程实现解析CLOB字段内的xml字符串:
- leetcode559. N叉树的最大深度
- 常见人工智能比赛平台总结
- boost::interprocess::named_mutex的翻译和学习