可以在activity中复写dispatchTouchEvent方法
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (v instanceof EditText) {
Rect outRect = new Rect();
v.getGlobalVisibleRect(outRect);
if (!outRect.contains((int) event.getRawX(), (int) event.getRawY())) {
v.setFocusable(false);
v.clearFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
saveEditTextContent(v);
}
}
}
return super.dispatchTouchEvent(event);
}
saveEditTextContent()方法保存EditText的内容,如果在该activity中有多个EditText都需要这种操作,可以在saveEditTextContent()方法中通过每个EditText的id来判断