/*** @description 关闭界面软键盘方法 复制直接调closeKeyBoard()用即可实现关闭软键盘*/private InputMethodManager mImm;public void closeKeyBoard(){mImm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);if (mImm.isActive() && this.getCurrentFocus() != null) {if (this.getCurrentFocus().getWindowToken() != null) {mImm.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);}}}/** * 点击软键盘外面的区域关闭软键盘 * @param ev * @return*/@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {// 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)View v = getCurrentFocus();if (isShouldHideInput(v, ev)) {//这里调用关闭方法closeKeyBoard();}}return super.dispatchTouchEvent(ev);}/*** 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏** @param v* @param event* @return*/private boolean isShouldHideInput(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则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点return false;}
如果觉得《android 关闭软键盘 点击软键盘之外关闭软键盘 editText关闭键盘》对你有帮助,请点赞、收藏,并留下你的观点哦!