出现键盘时滚动屏幕,在外部单击时隐藏键盘

时间:2018-09-27 09:19:04

标签: android

我没有找到两种方法。我可以做一个或另一个。

如果我在清单上设置了此选项,则当键盘出现时,我可以拥有可滚动的内容:

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);
}

但是如果同时使用这两个功能,则会在滚动之前隐藏键盘。

0 个答案:

没有答案