概要
Androidのキーボードの高さと表示されているかを知る方法が標準で用意されていないので自作してみました.
そのままコピペすれば動きます.
コードは10行くらいです.
ソースコード
var layoutBottom: Int = 0 // 現在のlayoutのbottomを保存
var isShowingKeyboard: Boolean = false // キーボードが表示されていればtrue
var keyboardHeight: Int = 0 // キーボードの高さ
override fun onCreate(savedInstanceState: Bundle?) {
val mRootView = window.decorView.findViewById<ViewGroup>(android.R.id.content)
layoutBottom = mRootView.height
mRootView.viewTreeObserver.addOnGlobalLayoutListener {
val rect = Rect()
mRootView.getWindowVisibleDisplayFrame(rect)
isShowingKeyboard = layoutBottom > rect.bottom
keyboardHeight = abs((layoutBottom - rect.bottom))
layoutBottom = rect.bottom
}
}