Fragment如何调用所在Activity的dispatchTouchEvent(MotionEvent ev)函数
发布日期:2021-11-16 18:49:32
浏览次数:4
分类:技术文章
本文共 2095 字,大约阅读时间需要 6 分钟。
中讲过如何判断软键盘的弹出并隐藏,其中hideKeyboard()函数放在Activity的dispatchTouchEvent(MotionEvent ev)函数中就可以完美地使用:
public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub if(ev.getAction()==MotionEvent.ACTION_DOWN) if(hideKeyboard()) return false; return super.dispatchTouchEvent(ev); }
也就是说,如果Activity接受到down事件,就执行hideKeyboard(),并且如果返回true,也就是说键盘已经弹出并隐藏,此时返回false,不再把触摸时间分发给子控件.但是如果在Fragment中,该如何使用父Activity的dispatchTouchEvent函数呢?
第一想到接口,在父Activity中定义一个接口public interface OnHideKeyboardListener{ public boolean hideKeyboard(); }
接着再定义设置接口函数
public void setOnHideKeyboardListener(OnHideKeyboardListener onHideKeyboardListener){ this.onHideKeyboardListener = onHideKeyboardListener; }
当然,要先在Activity中加上
private OnHideKeyboardListener onHideKeyboardListener;
在Fragment中覆写onAttach函数
public void onAttach(Activity activity) { // TODO Auto-generated method stub OnHideKeyboardListener onHideKeyboardListener = new OnHideKeyboardListener() { @Override public boolean hideKeyboard() { // TODO Auto-generated method stub if(inputMethodManager.isActive(searchEditText)){ getView().requestFocus(); inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus(). getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); return true; } return false; } }; ((TabFragment)getActivity()).setOnHideKeyboardListener(onHideKeyboardListener); super.onAttach(activity);}
最后,在Acitivity中覆写dispatchTouchEvent(MotionEvent)函数
public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub if(onHideKeyboardListener != null){ if(ev.getAction() == MotionEvent.ACTION_DOWN){ if(onHideKeyboardListener.hideKeyboard()){ return false; //不在分发触控给子控件 } } } return super.dispatchTouchEvent(ev); }
这样,在Fragment中,键盘弹出来,只要手指一触摸屏幕,键盘就能消失,并且不会触发子控件的触摸事件.
转载地址:https://blog.csdn.net/Thare_Lam/article/details/49130181 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月14日 08时33分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java前台显示近20天的东西_第十次课:前台首页设计及显示商品信息
2019-04-21
java开发web网站的路由设计_理解Web路由(浅谈前后端路由与前后端渲染)
2019-04-21
excel如何把顺序倒过来_在excel中怎么使文字颠倒顺序反过来显示呢?
2019-04-21
java 62进制 转换_序列号生成的另一种玩法--62进制如何玩?
2019-04-21
脚本语言php是什么意思,PHP脚本语言
2019-04-21
matlab数学规划模型,数学规划模型
2019-04-21
视频提取音频php,如何提取视频中的音频,从视频文件中提取出音频输出成MP3格式...
2019-04-21
diy.php添加验证码,织梦dedecms自定义表单中加入验证码
2019-04-21
c语言 无错 但只运行一半,求哈夫曼编码时程序运行到一半就终止了,编译无错...
2019-04-21
android 限速工具,Android下载器之限速篇
2019-04-21
html刷新ajax实现原理,AJAX的原理—如何做到异步和局部刷新
2019-04-21
html中列表菜单加文字请选择,html中下拉菜单
2019-04-21
读书郎平板中android,读书郎学生平板电脑怎么用 使用方法详解【图文】
2019-04-21