首先声明下,以下内容主要参考自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. 第1关:学习-用循环和数组实现输入某年某月某日,判断这一天一年的第几天
  2. Comparable接口和Comparator接口
  3. 《JAVA程序设计》第八周学习总结
  4. API-基本数据类型与字符串的互换
  5. SteamVR 工具包VRTK实例解析
  6. java3d box 坐标,3d transform的坐标空间及位置
  7. Video : 将使用AD认证的SharePoint网站配置为表单方式登录
  8. linux 关机时卸载sd,Linux下U盘SD卡的自动挂载和卸载
  9. [Leedcode][JAVA][第209题][长度最小的子数组][滑动窗口][前缀和][二分查找][双指针]
  10. 从网络读取数据并动态的显示在ListView中
  11. mysql in and in_完美解决mysql in条件语句只读取一条信息问题的2种方案
  12. Hadoop Snappy安装终极教程
  13. 424.替换后的最长重复字符
  14. CreateThread()和_beginthread()有什么不同?
  15. 数据同步,数据库实时迁移同步方案,数据库同步软件
  16. Unity Shader - GrabPass 实现武器热扭曲拖尾效果
  17. 那个炒币,8小时赚了一辆法拉利的女大学生,现在怎么样了?
  18. OpenCV-Python教程#5-颜色和颜色检测
  19. 人人都能成为闪电网络节点:第1章安装系统
  20. arp欺骗和dns欺骗

热门文章

  1. VOC数据集darknet官方快速下载地址
  2. 收官之战 Power AI编程马拉松第四场圆满结束
  3. python爬取豆瓣读书的书名与简介
  4. Python的第一次课堂作业
  5. mc红石java,[PR]红石计划 (ProjectRed)
  6. 小米逆行,乐视顺势,互联网电视结局已定
  7. Java SE第0节课  程序设计学习七宗罪
  8. 树莓派官方系统的安装 步骤教程
  9. 游戏策划笔记:目标设计
  10. 关于注册成功,进入提示页面,然后跳转