@Override
public boolean dispatchTouchEvent(MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_UP) {
// 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
View v = getCurrentFocus();
if (v != null) {
if (!(v instanceof EditText)) {
hideSoftInput(v.getWindowToken(), event, v);
} else {
hideSoftInput(v.getWindowToken(), event, v);
}
}
}
return super.dispatchTouchEvent(event);
}
/**
* 多种隐藏软件盘方法的其中一种
*
* @param token
*/
private void hideSoftInput(IBinder token, MotionEvent event, View v) {
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)) {
if (token != null) {
InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token,
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}