在Activity中:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
View view = getCurrentFocus();
Utils.hideKeyboard(ev, view, XiuGaiDZActivity.this);//调用方法判断是否需要隐藏键盘
break;
default:
break;
}
return super.dispatchTouchEvent(ev);
}
在utils工具类中:
public static void hideKeyboard(MotionEvent event, View view,
Activity activity) {
try {
if (view != null && view instanceof EditText) {
int[] location = {0, 0};
view.getLocationInWindow(location);
int left = location[0], top = location[1], right = left
+ view.getWidth(), bootom = top + view.getHeight();
// 判断焦点位置坐标是否在空间内,如果位置在控件外,则隐藏键盘
if (event.getRawX() < left || event.getRawX() > right
|| event.getY() < top || event.getRawY() > bootom) {
// 隐藏键盘
IBinder token = view.getWindowToken();
InputMethodManager inputMethodManager = (InputMethodManager) activity
.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(token,
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
结束 记录一下