Android EditText点击弹出软键盘点击外部消失

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Mr___Xu/article/details/85679400

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

结束 记录一下

猜你喜欢

转载自blog.csdn.net/Mr___Xu/article/details/85679400