在很多時候灿渴,很多需求下,我們都需要得知鍵盤的高度耙扔摺骚露!實在不能理解為什么安卓不提供這樣方便的API。雖然沒有很好的監(jiān)聽事件缚窿,但是我們還是可以制造一個的棘幸。想想虛擬鍵盤彈起來之后界面發(fā)生了什么變化?對的倦零,有一半的界面被遮擋了误续,那么我們就可以針對這個不同點制造一個事件監(jiān)聽了。
View mYourView;
int mVisibleHeight;
boolean mIsKeyboardShow;
protected void onCreate(Bundle savedInstanceState) {
...
mYourView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
getKeyboardHeight();
}
});
...
}
private void getKeyboardHeight() {
Rect r = new Rect();
mYourView.getWindowVisibleDisplayFrame(r);
int visibleHeight = r.height();
if (mVisibleHeight == 0) {
mVisibleHeight = visibleHeight;
return;
}
if (mVisibleHeight == visibleHeight) {
return;
}
mVisibleHeight = visibleHeight;
// Magic is here
if (/* compare the visiable height ?to others */) {
mIsKeyboardShow = true;
} else {
mIsKeyboardShow = false;
}
}
Have fun