175-2108-6175
网站建设资讯详细

Android开发中点击空白位置隐藏软键盘的方法

日期:2022-04-05  作者:千语创想  浏览:3295

Android开发中点击空白位置如何隐藏软键盘?这是很多开发者在进行安卓开发中会遇到的问题。


@Override

    public boolean dispatchTouchEvent(MotionEvent ev) {

        if (ev.getAction() == MotionEvent.ACTION_DOWN) {

            View v = getCurrentFocus();

            if (isShouldHideKeyboard(v, ev)) {

                hideKeyboard(v.getWindowToken());

            }

        }

        return super.dispatchTouchEvent(ev);

    }


    /**

     * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏

     *

     * @param v

     * @param event

     * @return

     */

    private boolean isShouldHideKeyboard(View v, MotionEvent event) {

        if (v != null && (v instanceof EditText)) {

            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) {

                // 点击EditText的事件,忽略它。

                return false;

            } else {

                return true;

            }

        }

        // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点

        return false;

    }


    /**

     * 获取InputMethodManager,隐藏软键盘

     * @param token

     */

    private void hideKeyboard(IBinder token) {

        if (token != null) {

            InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

            im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);

        }

    }


转载请注明来自:https://www.qianyuthink.com/news/6180.html