有些时候我们添加一个点击EditText以外的地方隐藏键盘的功能,通过查找资料,亲测可以采用以下的方法,在activity中重写dispatchTouchEvent(MotionEvent ev)的方法:

@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {     if (ev.getAction() == MotionEvent.ACTION_DOWN) {         View v = getCurrentFocus();         //当isShouldHideInput(v, ev)为true时,表示的是点击输入框区域,则需要显示键盘,         //同时显示光标,反之,需要隐藏键盘、光标         if (isShouldHideInput(v, ev)) {            //处理Editext的光标隐藏、显示逻辑            KeyBoardUtils.closeKeybord((EditText) v, this);         }         return super.dispatchTouchEvent(ev);     }     // 必不可少,否则所有的组件都不会有TouchEvent了     if (getWindow().superDispatchTouchEvent(ev)) {         return true;     }     return onTouchEvent(ev);}
/**     * 判断点击的区域是否EditText之外     *     * @param v     * @param event     *     * @return 返回true说明点击的是输入框区域外     */    public boolean isShouldHideInput(View v, MotionEvent event) {        if (v != null && (v instanceof EditText)) {            int[] leftTop = {0, 0};            //获取输入框当前的location位置            v.getLocationInWindow(leftTop);            int left = leftTop[0];            int top = leftTop[1];            int bottom = top + v.getHeight();            int right = left + v.getWidth();            if (event.getX() > left && event.getX() < right                    && event.getY() > top && event.getY() < bottom) {                // 点击的是输入框区域,保留点击EditText的事件                return false;            } else {                return true;            }        }        return false;    }
/**     * 关闭软键盘的方法(写在 KeyBoardUtils 的工具类里面)     *     * @param mEditText 输入框     * @param mContext 上下文     */    public static void closeKeybord(EditText mEditText, Context mContext) {        if (mEditText != null && mContext != null) {            InputMethodManager imm = (InputMethodManager) mContext                    .getSystemService(Context.INPUT_METHOD_SERVICE);            imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);        }    }

更多相关文章

  1. Android(安卓)Studio中设置ButterKnife、android butterknife ze
  2. Android(安卓)记键盘弹起的几个方法
  3. Android画图之Bitmap
  4. Android(安卓)ActionBar以及menu的代码设置样式
  5. android ADB (1) 键盘之adb keycode值
  6. Android软键盘确认键执行两次
  7. [置顶] Android开发之将Edittext输入弹出的软键盘设置搜索确定键
  8. android EditText获取光标位置并安插字符删除字符
  9. 让Android程序自动打开软键盘

随机推荐

  1. Android阅读源码的几种方法
  2. android web app+native app (转自完颜小
  3. Android 中Layout实现点击水波纹特效
  4. Android访问WCF服务(使用json实现参数传
  5. Android ndk下编译libcurl
  6. Android第二个功能:短信发送
  7. Android(安卓)实现滑动方法总结
  8. Android(安卓)UI 之WaterFall瀑布流效果
  9. Android开发之手机震动器
  10. listView下拉刷新(仿sina微博Android客户