Android,獲取虛擬鍵盤的高度

在很多時候,很多需求下,我們都需要得知鍵盤的高度??!實在不能理解為什么安卓不提供這樣方便的API。雖然沒有很好的監聽事件,但是我們還是可以制造一個的。想想虛擬鍵盤彈起來之后界面發生了什么變化?對的,有一半的界面被遮擋了,那么我們就可以針對這個不同點制造一個事件監聽了。

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

轉載請附上本文地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,124評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,206評論 4 61
  • 《一個人的朝圣》,當時看到書名的時候剛看完一本關于放下一切去西藏追尋心靈的故事,以為是同類就收了。 所有我以為的都...
    陳木cml閱讀 367評論 0 1
  • 也不知是夢是醒,總之是與你有關!愛上一個人好辛苦,沒有條件的我,怎么可能站在你的面前?說好的努力總是不能堅持,真心...
    墨雨卿辰閱讀 117評論 0 0
  • es z z zz z zzzzz s ssss s sss s s s s ss s
    Lewis92閱讀 213評論 0 0