1. 程式人生 > >android 判斷鍵盤是否彈出

android 判斷鍵盤是否彈出

需求:在鍵盤彈出時需要相應操作
解決:監聽鍵盤是否彈出,同時還可以獲取到鍵盤的高度
實現:

 edittext.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Rect rect = new Rect();
                mainActivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);//獲取當前介面可視部分
                int screenHeight = mainActivity.getWindow().getDecorView().getRootView().getHeight();//獲取螢幕高度
                int heiDifference = screenHeight - rect.bottom;//獲取鍵盤高度,鍵盤沒有彈出時,高度為0,鍵盤彈出時,高度為正數
                if (heiDifference == 0) {
                    //todo:鍵盤沒有彈出時
                } else {
                   //todo:鍵盤彈出時
                }
            }
        });

getDecorView() 獲取的是整個應用的view 包括標題欄,但是不包括狀態列,r.top就是狀態列的高度
轉自https://www.cnblogs.com/gejs/p/4363460.html