美文网首页
EditText隐藏软键盘的方法 --可以通用设置

EditText隐藏软键盘的方法 --可以通用设置

作者: 勤劳的蚂蚁 | 来源:发表于2020-03-11 13:24 被阅读0次

    点击edittext 之外的控件隐藏软键盘,否则不处理(默认弹起软键盘)参考
    https://www.cnblogs.com/JwangC/p/7553080.html

    Activity 中设置
       // 获取点击事件
        @Override
        public boolean dispatchTouchEvent(MotionEvent ev) {
            // TODO Auto-generated method stub
            if(ev.getAction() == MotionEvent.ACTION_DOWN) {
                View view = getCurrentFocus();
                if(isHideInput(view, ev)) {
                    HideSoftInput(view.getWindowToken());
                }
            }
            return super.dispatchTouchEvent(ev);
        }
    
        // 判定是否需要隐藏
        private boolean isHideInput(View v, MotionEvent ev) {
            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(ev.getX() > left && ev.getX() < right && ev.getY() > top
                        && ev.getY() < bottom) {//在EditText 范围内
                    return false;
                }else {
                    return true;
                }
            }
            return false;
        }
        // 隐藏软键盘
        private void HideSoftInput(IBinder token) {
            if(token != null) {
                InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                manager.hideSoftInputFromWindow(token,
                        InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
    
    
     
    其他方法:
     
    //直接关闭键盘输入法
    private void closeInputMethod() {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        boolean isOpen = imm.isActive();
        if (isOpen) {
            // imm.toggleSoftInput(0,
            // InputMethodManager.HIDE_NOT_ALWAYS);//没有显示则显示
            imm.hideSoftInputFromWindow(edt_pass.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }
    

    相关文章

      网友评论

          本文标题:EditText隐藏软键盘的方法 --可以通用设置

          本文链接:https://www.haomeiwen.com/subject/gezqjhtx.html