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);
            }
        }
  • 相关阅读:
    linux中文字体
    连接数据库服务器端的几个常见错误
    分布式部署下的报表调用 API调用 权限问题以及性能方案
    报表在IBM AIX系统下resin部署
    ASP.Net与JSP如何共享Session值
    async与await
    从小程序到小程序云开发
    什么是 FOUC(无样式内容闪烁)?你如何来避免 FOUC?
    微信小程序知识云开发
    变量的解构赋值
  • 原文地址:https://www.cnblogs.com/shen-hua/p/6029902.html
Copyright © 2011-2022 走看看