Android中软键盘弹出后,通常只能通过返回键来将其收起来(有些输入法自己在键盘的上方增加了一个按钮,点击后可以隐藏软键盘,不过这不是通用的方法,很多输入法并没有实现这样的功能)。比较好的做法是,让用户可以点击键盘外的任意空白区域来隐藏软键盘。
实现方法很简单,只需要重写Activity的onTouchEvent()方法,在onTouchEvent()方法中判断,如果当前软键盘是显示状态,就将其隐藏。
这里涉及到两个问题:
1. 如何判断软键盘是否是显示状态
2. 如何隐藏软键盘

这两个问题在前两篇博文中已经详细的分析了,这里只需要直接使用就可以了。
示例代码如下。

@Overridepublic boolean onTouchEvent(MotionEvent event) {    if (mIsSoftKeyboardShowing) {        InputMethodManager imm = (InputMethodManager) ContextUtil.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);        if (imm != null) {            imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);        }        return true;    } else {        return super.onTouchEvent(event);    }}

mIsSoftKeyboardShowing表示当前软键盘处于显示状态。
这样重写onTouchEvent后,就可以实现点击任意空白区域隐藏软键盘。
需要注意的是,这里实现的是点击任意空白区域隐藏软键盘,而不是点击任意区域隐藏软键盘。当点击软键盘所在区域时,软键盘会消费本次点击事件,产生文字输入;当点击软键盘外的EditText时,EditText会消费本次点击事件,改变输入光标的位置;当点击软键盘外设置了OnClickListener的Button、ImageView时,Button、ImageView会消费本次点击事件,执行相应的OnClick方法。。。所有的这些操作都不会触发Activity中的onTouchEvent(),只有点击到空白区域时,才会触发Activity中的onTouchEvent()。这涉及到TouchEvent的分发机制,关于TouchEvent的分发机制这里就不做介绍了。

更多相关文章

  1. Android的Activity一打开就出现讨嫌的软键盘,怎样将其关闭?
  2. android软键盘enter键
  3. Android新建项目后src下没有自动生成文件
  4. H5跟ios、android数据对接
  5. Android软键盘弹出时布局的调整问题
  6. Android(安卓)Stuido 导出 APK
  7. Android(安卓)有点击动画效果的View
  8. 实时改变配置
  9. Space-Navigation-View 底部栏点击

随机推荐

  1. Android小项目合集(经典教程)包含十五个And
  2. android studio 如何修改app名字、修改ap
  3. Android 平台基础开发简介
  4. Android平台开发-Android HAL develop-An
  5. 基于WiEngine游戏引擎--背景移动
  6. Android Studio Android UI控件学习笔记
  7. Android中的相对布局详解
  8. Android(安卓)Launcher2 icon大小修改
  9. Android手机操作系统中的常用术语
  10. Android 核心分析(13) -----Android GWES