監聽Android軟體盤彈出及隱藏

weixin_33912445發表於2017-10-18

專案中用到監聽軟鍵盤的顯示與隱藏,搜尋無果,官方並沒有提供軟鍵盤的顯示與隱藏的監聽。
通過曲線救國,通過監聽佈局的大小改變來實現。

整體佈局大小改變的監聽

在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();

相關文章