網上介紹過監聽鍵盤是否彈出的方法,我自己也是嘗試過,不是很好用,今天發現了一種比較好的監聽鍵盤是否彈出的方法,用起來十分簡單,同時也可以通過此方法獲取到鍵盤的高度
et.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ //當鍵盤彈出隱藏的時候會 調用此方法。 @Override public void onGlobalLayout() { Rect r = new Rect(); //獲取當前界面可視部分 MainActivity.this.getWindow().getDecorView().getWindowVisibleDisplayFrame(r); //獲取屏幕的高度 int screenHeight = MainActivity.this.getWindow().getDecorView().getRootView().getHeight(); //此處就是用來獲取鍵盤的高度的, 在鍵盤沒有彈出的時候 此高度為0 鍵盤彈出的時候為一個正數 int heightDifference = screenHeight - r.bottom; Log.d("Keyboard Size", "Size: " + heightDifference); } });
使用起來很簡單只需判斷鍵盤高度是否為0 就可以知道鍵盤是否彈出了。
getDecorView() 獲取的是整個應用的view 包括標題欄,但是不包括狀態欄,r.top就是狀態欄的高度。