Android 監聽鍵盤彈起及隱藏

xechoz發表於2018-02-08

背景

工作中偶爾需要監聽鍵盤彈出,收起,比如監聽使用者調出鍵盤的操作,顯示額外的ui;鍵盤收起,需要隱藏某些ui。
於是把這個功能寫成了一個工具類。
目前只實現一個功能: 監聽鍵盤的彈出&收起。

原理

因為鍵盤彈出或者收起,鍵盤頂部的view會頂起或降下,所以可以通過計算對應view的縱座標變化,判斷鍵盤的狀態。

前提

對應的 ActivitywindowSoftInputMod 必須是 adjustResize, 否則鍵盤的彈出、隱藏,不會引起佈局變化,我們就監聽不到縱座標變化

怎麼用

// 鍵盤彈出會被頂起的view,一般是 EditText,或包住 EditText 的Layout
EditText thePushUpView = findViewById(R.id.my_edit_text);

OkKeyboard.watch(thePushUpView, new KeyboardChangedListener() {
    @Override
    public void onKeyboardOpen() {
        Log.d(TAG, "onKeyboardOpen");
    }

    @Override
    public void onKeyboardHide() {
        Log.d(TAG, "onKeyboardHide");
    }
});
複製程式碼

專案地址

OkKeyboard-監聽鍵盤彈出收起工具類

相關文章