我没有找到两种方法。我可以做一个或另一个。
如果我在清单上设置了此选项,则当键盘出现时,我可以拥有可滚动的内容:
android:windowSoftInputMode="adjustResize"
如果我使用此代码,则在单击外部时可以隐藏键盘:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if ( v instanceof EditText) {
Rect outRect = new Rect();
v.getGlobalVisibleRect(outRect);
if (!outRect.contains((int)ev.getRawX(), (int)ev.getRawY())) {
v.clearFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
}
return super.dispatchTouchEvent(ev);
}
但是如果同时使用这两个功能,则会在滚动之前隐藏键盘。