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事件上的传递关系相关推荐

  1. [习题]如何触发 GridView 身体里面的「子控件」的事件 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充)...

    [习题]如何触发 GridView 身体里面的「子控件」的事件?#1 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充) 這個範例是要補充書本「上集」(ASP.NET專題實務) ...

  2. Repeater控件的ItemDataBound事件

    Repeater控件的ItemDataBound事件:在项被绑定数据后触发. 下面的例子来自msdn,不过我把前台和后台分开了. 前台是: View Code <%@ Page Language ...

  3. .net数据控件的冒泡事件

    一.理解事件冒泡 在ASP.NET框架包含三个支持事件冒泡的标准控件:Repeater.DataList和DataGrid控件.这些控件可以让你捕获其子控件的时 间.当子控件产生一个事件时,事件就&q ...

  4. 为.net中的ListBox控件添加双击事件

    我在用dotnet做一个项目的过程中,遇到了一个ListBox的问题:通过在一个ListBox中双击,把选中的项添加到另一个ListBox中,但ListBox控件本身并没有该事件,那么如何实现呢?我就 ...

  5. asp.net panel 加html,ASP.NET 页面中动态增加的控件、添加事件

    要求:页面上有一个Add按钮,每点击一次该按钮,页面上动态创建一个WebPartZone! 提醒:WebPartZone只能在OnInit或之前才能创建,否则报异常! 大家都知道,按钮的点击事件是在R ...

  6. AspxCallBack控件的CallBack事件

    AspxCallBack控件的CallBack事件 AspxCallBack控件的CallBack事件 1)不能弹出窗口: 2)取AspxDropDownList控件客户端的值使用 ddl.Clien ...

  7. 谨慎注意WebBrowser控件的DocumentCompleted事件

    引言 WebBrowser控件的DocumentCompleted事件一般就被认定为是在页面完全加载完毕后产生,而注释中也是这么写的: 但事实却并非如此. 首先它不一定会在完全加载完毕时才触发,有时就 ...

  8. asp.net Login控件基本属性及事件说明

    原文:asp.net Login控件基本属性及事件说明 Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径. Login系列控件包含下列控件: Login 登录控件 ...

  9. [习题].FindControl()方法 与 PlaceHolder控件 #2(动态加入「子控件」的事件)

    这是我的文章备份,有空请到我的网站走走, http://www.dotblogs.com.tw/mis2000lab/ 才能掌握我提供的第一手信息,谢谢您. http://www.dotblogs.c ...

最新文章

  1. tf.keras.activations.softmax 激活函数 示例
  2. 播放视频一会,出错并自动关闭
  3. java com dll_通过COM组件方式实现java调用C#写的DLL文件
  4. JavaScript==比较的规则
  5. Dell PowerEdge - 如何配置 iDRAC9 和生命周期控制器网络 IP
  6. javascript 以“年-月-日 时:分:秒”格式显示当前时间
  7. 前端开发面试题-JavaScript(二)
  8. 多线程访问导致崩溃一例
  9. git 取消merge_git 入门教程之备忘录[译]
  10. MySQL-存储过程-高效清理数据
  11. t检验的几种应用案例
  12. 1000: 从今天开始入坑C语言
  13. ei指什么_今天说一下EI是什么
  14. Android Hotfix 新方案——Amigo 源码解读
  15. pc构件生产线及设备_PC构件生产线全套设备清单
  16. oracle数据库数据误删除恢复方法
  17. 跑步适合戴哪种耳机不掉?专业跑步耳机推荐
  18. 重载测试打印 - GoogleTest()
  19. Web页面布局上的幽灵事件 -- 外边距合并折叠解惑
  20. Java、显示分期还贷时间表

热门文章

  1. 【CodeForces - 574B】Bear and Three Musketeers (枚举边,思维,优秀暴力)
  2. python 问题集
  3. java自定义线程_Java自定义线程池详解
  4. 苏宁css代码生成器,【前端】06 - rem + less + 媒体查询 - 制作苏宁首页
  5. Android常见命令
  6. MyEclipse 10.5 安装SVN插件
  7. Oracle中通过游标执行带参数的存储过程实现解析CLOB字段内的xml字符串:
  8. leetcode559. N叉树的最大深度
  9. 常见人工智能比赛平台总结
  10. boost::interprocess::named_mutex的翻译和学习