首先声明下,以下内容主要参考自http://www.2cto.com/kf/201505/401382.html

由于部分代码实际使用过程中有些问题,做了部分更改,主要在方法2:

1. 一般直接使用如下方式即可

@Override
public boolean onTouchEvent(MotionEvent event) {if(event.getAction() == MotionEvent.ACTION_DOWN &&getCurrentFocus()!=null && getCurrentFocus().getWindowToken()!=null ){InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);}return super.onTouchEvent(event);
}

2. 如果第一种方法没效果,可以在activity中加入(上面的就不要了)

@Override
public boolean dispatchTouchEvent(MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_DOWN  &&getCurrentFocus()!=null &&getCurrentFocus().getWindowToken()!=null) {View v = getCurrentFocus();if (isShouldHideKeyboard(v, event)) {hideKeyboard(v.getWindowToken());}}return super.dispatchTouchEvent(event);
}/*** 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏*/
private boolean isShouldHideKeyboard(View v, MotionEvent event) {if (v != null && (v instanceof EditText)) {int[] l = {0, 0};v.getLocationOnScreen(l);int left = l[0],top = l[1],bottom = top + v.getHeight(),right = left + v.getWidth();if (event.getRawX() > left && event.getRawX() < right&& event.getRawY() > top && event.getRawY() < bottom) {// 点击EditText的事件,忽略它。return false;} else {return true;}}// 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点return false;
}/*** 获取InputMethodManager,隐藏软键盘*/
private void hideKeyboard(IBinder token) {if (token != null) {InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);inputMethodManager.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);}
}

主要的改变在于

1)取点击event坐标的时候使用的是getRawX、getRawY,表示相对于屏幕的绝对坐标。

关于其他的方法见 http://blog.sina.com.cn/s/blog_5da93c8f0100tlol.html,但实际效果可能有差距,需自行测试。

2)获取EditText控件的坐标,使用了getLocationOnScreen,表示这个view左上角相对于屏幕的绝对坐标,getLocationInWindow 计算该视图在它所在的widnow的坐标x、y值,这个也自行测试吧...

Android点击空白处隐藏软键盘相关推荐

  1. android中点击空白处隐藏软键盘

    在android中点击EditText的时候会弹出软键盘,这时候如果想隐藏软键盘或者填完内容后点其他的地方直接隐藏软键盘,可以按一下方法处理. 首先获得软键盘Manager InputMethodMa ...

  2. android 获取键盘回车键事件,设置软键盘回车键显示内容,点击空白处隐藏软键盘

    首先设置EditText的回车属性 drawable文件 @drawable/editcolor <?xml version="1.0" encoding="utf ...

  3. 安卓:点击空白处隐藏软键盘

    建议重新封装,每个activity重新写,就显得有点烦琐 //region 点击隐藏键盘public boolean dispatchTouchEvent(MotionEvent ev) {if (e ...

  4. Android 点击屏幕空白处隐藏软键盘

    前言 最近在重构老项目 把之前的拍照功能也搬过来了 在输入打卡号的时候 软键盘一直在打开着 点签到按钮 很麻烦 所以想实现 点击屏幕空白处隐藏软键盘!! 封装工具 据传入控件的坐标和用户的焦点坐标,判 ...

  5. android 点击空白退出,Android 点击空白处隐藏键盘

    方法一:使用android的分发机制(代码稍微有点多) /** * 实现点击空白处,软键盘消失事件 * @param ev * @return */ @Override public boolean  ...

  6. android开发隐藏软键盘,Android开发之完全隐藏软键盘的方法

    隐藏软键盘一直是我头痛的事情,没有找到一种真正能隐藏的方法.点击EditText的时候总是弹出软键盘.-----杯具 杯具(一): InputMethodManager im =(InputMetho ...

  7. android隐藏键盘方法,【工具类】Android 最有效的隐藏软键盘方法

    前言 在平时的 App 开发中, 免不了会遇到需要开发者隐藏软键盘的情况, 比如当在多个输入框填入个人基本信息, 最后有个保存按钮, 点击即可将个人基本信息保存, 这时就需要开发者编写代码去隐藏软键盘 ...

  8. android初始化activity时隐藏软键盘

    2019独角兽企业重金招聘Python工程师标准>>> 由于activity在捕获到EditText焦点的时候就会自动弹出软键盘,而当加载Activity的时候会自动捕获焦点.所以为 ...

  9. Android 手动显示和隐藏软键盘

    本人用过第一个,第二个靠谱 1.方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示) InputMethodManager imm = (InputMethodManager) getSystem ...

最新文章

  1. Mysql 表字段(列)编辑 (增删改)
  2. down 网卡端口周期性的up_down 网卡端口周期性的up_思科交换机端口down或up故障原因...
  3. 周期均方根和有效值的区别_茅台王子酒和迎宾酒的区别是什么?
  4. 自动删除过期归档日志
  5. 怎么用python做战斗机_关于python文件操作
  6. 【图像处理】MATLAB:基本原理
  7. 单层感知机实现或运算
  8. 鲁大师电脑硬件兼容性测试软件,还在用鲁大师?查看电脑硬件信息可以用这些免费的软件!...
  9. 小学计算机网络教室管理制度,计算机网络教室使用管理制度[大全五篇]
  10. 计算方法(三)分段线性插值和Hermite插值
  11. 计算机中 加减运算 的 实现原理
  12. ios android 系统占用空间,iOS 系统占用了 20G 储存空间?别担心,教你快速解决!...
  13. Android 真机连接本地PC服务器
  14. 学习金字塔——谈谈对学习的一点理解
  15. win10蓝牙功能不见了_Win10 2004更新了什么?新功能新特性汇总
  16. 赋能农业生态链,打造“云端青柚”UZ新概念
  17. 西门子1500PLC添加伺服电机
  18. Linux创建和删除目录
  19. 关于docker报错:No connection could be made because the target machine actively refused it.
  20. Docker特权模式:--privileged、--cap-add、--cap-drop

热门文章

  1. BUUOJ-sqli_labs做题笔记
  2. linux编译image,CxImage Linux 编译
  3. 青少年CTFmisc-间谍的录音
  4. 【C语言】8.结构体
  5. UI设计师月薪大概是多少 一般能工作到多少岁
  6. 2019年,年终总结
  7. Python一些可能用的到的函数系列28 超大文本文件分割读取
  8. Centos7 测试实际网速/带宽
  9. 网卡<BROADCAST,MULTICAST,UP,LOWER_UP>
  10. 阿里巴巴神马搜索一面