获取键盘是否出现以及收起键盘

2018-05-23  本文已影响18人  风___________

获取键盘是否出现

/**
     * 获取键盘是否出现
     * */
    protected boolean isKeyBoardShow(){
        //获取当前屏幕内容的高度
        int screenHeight = getWindow().getDecorView().getHeight();
        //获取View可见区域的bottom
        Rect rect = new Rect();
        getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
        return (screenHeight - rect.bottom - getSoftButtonsBarHeight()) != 0;
    }
    /**
     * 底部虚拟按键栏的高度
     * @return
     */
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    private int getSoftButtonsBarHeight() {
        DisplayMetrics metrics = new DisplayMetrics();
        //这个方法获取可能不是真实屏幕的高度
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int usableHeight = metrics.heightPixels;
        //获取当前屏幕的真实高度
        getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
        int realHeight = metrics.heightPixels;
        if (realHeight > usableHeight) {
            return realHeight - usableHeight;
        } else {
            return 0;
        }
    }

收起键盘

/**
     * 收起键盘
     * */
    protected void closeKeyboard(){
        InputMethodManager inputMethodManager = (InputMethodManager)
                getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(),0);
    }

应用场景

/** 页面左上角的返回按钮触发事件 */
protected void leftButtonAction(){
        if (isKeyBoardShow()){
            closeKeyboard();
            return;
        }
        finish();
    }

亲测,亲写,往上千篇一律~~也是无奈。。。。我是伸手狗,请多指教~~

上一篇下一篇

猜你喜欢

热点阅读