您的位置:首页 > 其它

自定义View监听onKeyDown事件,View捕获焦点

2014-11-18 16:07 465 查看
     最近在开始学习自定义的View, 想在自定义的View中监听onKeyDown事件,处理一些逻辑。发现基类View中有该函数,于是重写它。

然后在MainActivity中调用setContentView。

View contentView = new CustomView(this);
setContentView(contentView);CustomView继承View重写onKeyDown函数,结果发现它的onKeyDown函数没有执行。。
    在网上找了点资料:原来是焦点的问题。我们的程序运行时默认的焦点是在Activity上,而View没有获得焦点,所以它的onKeyDown函数监听不到。

既然是这样,那应该让View获取到焦点就可以了监听了。

   修改为 View contentView = new CustomView(this);
contentView.setFocusable(true);
contentView.setFocusableInTouchMode(true);
setContentView(contentView);或者在CustomView的构造函数中加上设置焦点的两句也可以让View获取到焦点。

setFocusable(true): 设置View能够获取到焦点。

setFocusableInTouchMode():设置是否有焦点来响应点触的资格

测试过程中发现会先执行View的onKeyDown事件,然后再执行Activity的,所以我们可以在View中的onKeyDown中返回false,来屏蔽掉Activiy中的对应事件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐