diff --git a/keyboardvisibilityevent/src/main/java/net/yslibrary/android/keyboardvisibilityevent/KeyboardVisibilityEvent.kt b/keyboardvisibilityevent/src/main/java/net/yslibrary/android/keyboardvisibilityevent/KeyboardVisibilityEvent.kt index 0121520..c650046 100644 --- a/keyboardvisibilityevent/src/main/java/net/yslibrary/android/keyboardvisibilityevent/KeyboardVisibilityEvent.kt +++ b/keyboardvisibilityevent/src/main/java/net/yslibrary/android/keyboardvisibilityevent/KeyboardVisibilityEvent.kt @@ -100,17 +100,11 @@ object KeyboardVisibilityEvent { val layoutListener = object : ViewTreeObserver.OnGlobalLayoutListener { - private val r = Rect() - private var wasOpened = false override fun onGlobalLayout() { - activityRoot.getWindowVisibleDisplayFrame(r) - - val screenHeight = activityRoot.rootView.height - val heightDiff = screenHeight - r.height() - val isOpen = heightDiff > screenHeight * KEYBOARD_MIN_HEIGHT_RATIO + val isOpen = isKeyboardVisible(activity) if (isOpen == wasOpened) { // keyboard state has not changed @@ -140,8 +134,11 @@ object KeyboardVisibilityEvent { activityRoot.getWindowVisibleDisplayFrame(r) + val location = IntArray(2) + getContentRoot(activity).getLocationOnScreen(location) + val screenHeight = activityRoot.rootView.height - val heightDiff = screenHeight - r.height() - getContentRoot(activity).top + val heightDiff = screenHeight - r.height() - location[1] return heightDiff > screenHeight * KEYBOARD_MIN_HEIGHT_RATIO }