From c769eb2d9454cc288aff7bee11e70420ab5bee44 Mon Sep 17 00:00:00 2001 From: Fabian Terhorst Date: Sun, 2 Jul 2017 20:44:50 +0200 Subject: [PATCH] Fix height for android api >= 21 --- .../keyboardwatcher/KeyboardWatcher.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/keyboardwatcher/src/main/java/com/azimolabs/keyboardwatcher/KeyboardWatcher.java b/keyboardwatcher/src/main/java/com/azimolabs/keyboardwatcher/KeyboardWatcher.java index ab5692b..534cb92 100644 --- a/keyboardwatcher/src/main/java/com/azimolabs/keyboardwatcher/KeyboardWatcher.java +++ b/keyboardwatcher/src/main/java/com/azimolabs/keyboardwatcher/KeyboardWatcher.java @@ -1,7 +1,9 @@ package com.azimolabs.keyboardwatcher; import android.app.Activity; +import android.graphics.Point; import android.os.Build; +import android.view.Display; import android.view.View; import android.view.ViewTreeObserver; import android.view.Window; @@ -59,14 +61,23 @@ private class GlobalLayoutListener implements ViewTreeObserver.OnGlobalLayoutLis @Override public void onGlobalLayout() { + final int screenHeight; + if (Build.VERSION.SDK_INT >= 21) { + Display display = activityRef.get().getWindowManager().getDefaultDisplay(); + Point size = new Point(); + display.getSize(size); + screenHeight = size.y; + } else { + screenHeight = rootViewRef.get().getHeight(); + } if (initialValue == 0) { - initialValue = rootViewRef.get().getHeight(); + initialValue = screenHeight; } else { - if (initialValue > rootViewRef.get().getHeight()) { + if (initialValue > screenHeight) { if (onKeyboardToggleListenerRef.get() != null) { if (!hasSentInitialAction || !isKeyboardShown) { isKeyboardShown = true; - onKeyboardToggleListenerRef.get().onKeyboardShown(initialValue - rootViewRef.get().getHeight()); + onKeyboardToggleListenerRef.get().onKeyboardShown(initialValue - screenHeight); } } } else {