From b3235172d4610bd3b200b6bc91706b5b09e3e4b3 Mon Sep 17 00:00:00 2001 From: Michael Loremia Date: Fri, 27 Mar 2020 03:56:44 +0800 Subject: [PATCH] Fix layout overflowing to navigation bar & blackbar issue when keyboard is active --- src/android/CDVIonicKeyboard.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/android/CDVIonicKeyboard.java b/src/android/CDVIonicKeyboard.java index b7ec455..517d2f5 100644 --- a/src/android/CDVIonicKeyboard.java +++ b/src/android/CDVIonicKeyboard.java @@ -10,11 +10,13 @@ import org.json.JSONException; import android.content.Context; +import android.graphics.Color; import android.graphics.Rect; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewTreeObserver; import android.view.ViewTreeObserver.OnGlobalLayoutListener; +import android.view.Window; import android.view.inputmethod.InputMethodManager; // import additionally required classes for calculating screen height @@ -73,6 +75,7 @@ public void run() { //http://stackoverflow.com/a/4737265/1091751 detect if keyboard is showing FrameLayout content = (FrameLayout) cordova.getActivity().findViewById(android.R.id.content); rootView = content.getRootView(); + list = new OnGlobalLayoutListener() { int previousHeightDiff = 0; @Override @@ -125,13 +128,7 @@ else if ( pixelHeightDiff != previousHeightDiff && ( previousHeightDiff - pixelH private void possiblyResizeChildOfContent() { int usableHeightNow = computeUsableHeight(); if (usableHeightNow != usableHeightPrevious) { - int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight(); - int heightDifference = usableHeightSansKeyboard - usableHeightNow; - if (heightDifference > (usableHeightSansKeyboard/4)) { - frameLayoutParams.height = usableHeightSansKeyboard - heightDifference; - } else { - frameLayoutParams.height = usableHeightSansKeyboard; - } + frameLayoutParams.height = usableHeightNow; mChildOfContent.requestLayout(); usableHeightPrevious = usableHeightNow; } @@ -140,7 +137,7 @@ private void possiblyResizeChildOfContent() { private int computeUsableHeight() { Rect r = new Rect(); mChildOfContent.getWindowVisibleDisplayFrame(r); - return (r.bottom - r.top); + return r.bottom; } };