zoukankan      html  css  js  c++  java
  • Android中点击隐藏软键盘最佳方法——Android开发之路4

     Android中点击隐藏软键盘最佳方法

     实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏;

    1、重写dispatchTouchEvent()方法,获取当前触摸事件为DOWN的时候隐藏软键盘

    @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
            //Finger touch screen event
            if (ev.getAction() == MotionEvent.ACTION_DOWN) {
                // get current focus,Generally it is EditText
                View view = getCurrentFocus();
                if (isShouldHideSoftKeyBoard(view, ev)) {
                    hideSoftKeyBoard(view.getWindowToken());
                }
            }
            return super.dispatchTouchEvent(ev);
        }

    2、isShouldHideInput()方法;

    /**
         * Judge what situation hide the soft keyboard,click EditText view should show soft keyboard
         * @param v Incident event
         * @param event 
         * @return
         */
        private boolean isShouldHideSoftKeyBoard(View view, MotionEvent event) {
            if (view != null && (view instanceof EditText)) {
                int[] l = { 0, 0 };
                view.getLocationInWindow(l);
                int left = l[0], top = l[1], bottom = top +view.getHeight(), right = left
                        + view.getWidth();
                if (event.getX() > left && event.getX() < right
                        && event.getY() > top && event.getY() < bottom) {
                    // If click the EditText event ,ignore it
                    return false;
                } else {
                    return true;
                }
            }
            // if the focus is EditText,ignore it; 
            return false;
        }

    3、hideSoftKeyBoard()方法;

    /**
         * hide soft keyboard
         * @param token
         */
        private void hideSoftKeyBoard(IBinder token) {
            if (token != null) {
                InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                im.hideSoftInputFromWindow(token,
                        InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
  • 相关阅读:
    费用流
    平面最近点对
    纸牌均分问题
    cdq分治模板
    费解的开关
    斐波那契和排列组合性质
    主席树
    Springboot使用EasyExcel(仅限自己收藏)
    vue项目中h5移动端中通过flex布局实现首尾固定,中间滚动(借鉴)
    vue路由参数的获取、添加和替换
  • 原文地址:https://www.cnblogs.com/shen-hua/p/6029902.html
Copyright © 2011-2022 走看看