很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏。为了更好的体验,我们可以实现当用户使用完毕软键盘时。点击空白区域即可实现隐藏的功能。效果如图所示:


代码实现

package example.com.jinlin.myapplication;import android.content.Context;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;/*** Created by J!nl!n on 15/5/21.*/
public abstract class BaseActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);iniView();}public abstract void iniView();@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {View v = getCurrentFocus();if (isShouldHideKeyboard(v, ev)) {hideKeyboard(v.getWindowToken());}}return super.dispatchTouchEvent(ev);}/*** 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏** @param v* @param event* @return*/private boolean isShouldHideKeyboard(View v, MotionEvent event) {if (v != null && (v instanceof EditText)) {int[] l = {0, 0};v.getLocationInWindow(l);int left = l[0],top = l[1],bottom = top + v.getHeight(),right = left + v.getWidth();if (event.getX() > left && event.getX() < right&& event.getY() > top && event.getY() < bottom) {// 点击EditText的事件,忽略它。return false;} else {return true;}}// 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点return false;}/*** 获取InputMethodManager,隐藏软键盘* @param token*/private void hideKeyboard(IBinder token) {if (token != null) {InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);}}
}

当然我们还有更加简单的方法来实现该功能,只需要重写onTouchEvent方法即可。代码如下:

// 点击空白区域 自动隐藏软键盘public boolean onTouchEvent(MotionEvent event) {if(null != this.getCurrentFocus()){/*** 点击空白位置 隐藏软键盘*/InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);return mInputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0);}return super .onTouchEvent(event);}

使用一个BaseActivity进行一些处理公共操作,其他Activity均继承自该基类Activity即可,则所有界面均可实现点击空白区域,隐藏软键盘。
示例代码下载

Android点击空白区域,隐藏输入法软键盘相关推荐

  1. Java调用虚拟键盘输入法_Android 点击屏幕空白处收起输入法软键盘(手动打开)...

    很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏.为了更好的体验,我们可以实现当用户使用完毕软键盘时.点击屏幕空白区域即可实现 ...

  2. jquery/js 点击空白区域隐藏某一个层/元素

    场景:点击一个按钮弹出一个对话框/气泡,点击空白区域隐藏对话框/气泡: html: <button id="btn">按钮</button> <div ...

  3. Android 点击空白出隐藏软键盘

    /*** 点击空白位置 隐藏软键盘*/@Overridepublic boolean onTouchEvent(MotionEvent event) {if (null != this.getCurr ...

  4. [Unity][NGUI]悬浮点击空白区域隐藏UI

    获取NGUI 当前 鼠标 悬浮的 带有碰撞体BoxCollider 的UI对象 UICamera.hoveredObject ...public string hoverUI = "&quo ...

  5. android 输入法 确定按钮,Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究...

    在项目开发中,用到编辑框的地方经常涉及到要监听或者控制软键盘的显示/隐藏状态.本以为这是很容易解决的一个小问题,没想到当初碰到这个问题才明白还得花点小心思才能整好.现将针对软键盘的显示/隐藏状态的监听 ...

  6. [iOS] UITextField隐藏软键盘心得(隐藏自身软键盘、点击Return自动转到下个文本框、轻触背景隐藏软键盘)...

    作者:zyl910 关于隐藏软键盘,网上的办法良莠不齐,大多是通过实现UITextFieldDelegate来隐藏软键盘,该方法代码较多,且在文本框很多的时不好处理.我经过搜索与摸索,找到了最佳的处理 ...

  7. Android popupwindow 失去焦点或者点击空白区域时消失的解决方法

    Android popupwindow 失去焦点或者点击空白区域时消失的解决方法 参考文章: (1)Android popupwindow 失去焦点或者点击空白区域时消失的解决方法 (2)https: ...

  8. Android小技巧 自动关闭输入法软键盘

    一.简介 作用:获取编辑框的最大长度,当输入后文本长度等于最大长度则关闭软键盘. 使用场景:手机号,固定位数的密码,验证码 二.代码部分 工具类 ViewUtil.java public class ...

  9. Android --- 进入页面时,不弹出软键盘。当 EditText 被点击时不弹出软键盘,而是调用其他选择器,比如时间选择器等

    功能需求: 1.进入页面时,不弹出软键盘 2.当 EditText 被点击时不弹出软键盘,而是调用其他选择器,比如时间选择器等 搜索百度测试: 1.百度上说用 editText.setInputTyp ...

最新文章

  1. 百度AI攻坚战:PaddlePaddle中国突围
  2. onCompositionStart与compositionend
  3. RDKit | 比较分子之间的相似性
  4. Py之matplotlib:matplotlib绘图自定义函数总结
  5. C++ STL stirng的复制比较
  6. 为什么中小企业选择 SAP Business One?
  7. 利用JavaScript检查用户注册信息是否正确,在以下情况不满足时报错并阻止提交表单...
  8. “搞机器学习没前途”
  9. Axure RP 8汉化
  10. adb shell 命令
  11. 商务与经济统计学习 --概率
  12. 上海大学计算机专业就业薪资,人均月薪过万?985、211、普通大学毕业生薪资水平大起底!和你想的不一样……...
  13. 渗透测试之通道构建Cheat Sheet
  14. 你参加了无数 “打卡” 群,为什么收获甚微。。。
  15. Camera Shading介绍
  16. Python调用高德地图API测距
  17. 用数字计算机公式表白,用最浪漫的数学表白,爱情数学表白公式
  18. View UI (iview)表格合并单元格(行/列合并)
  19. 国企工作,让我有更多时间了解VCN中文编程
  20. 计算机课件制作教程ppt,电脑制作ppt详细步骤_新手制作ppt详细步骤图文教程

热门文章

  1. 一年级班主任的说话 - 『小学教育』 - 教育讨论区 - 教育手拉手论坛
  2. 树莓派进行视频直播的几种方式
  3. pip安装的python库Pycharm用不了
  4. CSS:text-align文本对齐方式的6种方式
  5. Android 之 开机动画制作
  6. 【github】解决git克隆/上传速度过慢
  7. java文件读取与写入
  8. 某在线商店电子产品销售数据可视化分析
  9. 权限管理系统 Spring-authority
  10. 第七天----创建型设计模式笔记