监听Android软件盘弹出及隐藏

2017-10-18  本文已影响15人  IT枫

项目中用到监听软键盘的显示与隐藏,搜索无果,官方并没有提供软键盘的显示与隐藏的监听。
通过曲线救国,通过监听布局的大小改变来实现。

整体布局大小改变的监听

在Activity生命周期函数onResume中添加整体布局的改变的监听

    //屏幕的高度,单位像素
    private int screenHeight;
    //整体布局的改变量
    private int keyHeight;
    @Override
    protected void onResume() {
        super.onResume();
        //获取当前屏幕内容的高度  
        DisplayMetrics dm = getResources().getDisplayMetrics();
        screenHeight = dm.heightPixels;
        //阀值设置为屏幕高度的1/3    
        keyHeight = screenHeight * 2 / 3;
        getWindow().getDecorView().addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
            Rect rect = new Rect();
            getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
            if (bottom != 0 && oldBottom != 0 && rect.bottom <= keyHeight) {
                softInputShow();
            } else if (bottom != 0 && oldBottom != 0) {
                softInputHide();
            }
        });
    }
    public abstract void softInputHide();

    public abstract void softInputShow();
上一篇下一篇

猜你喜欢

热点阅读