diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/QtLayout.java | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtLayout.java b/src/android/jar/src/org/qtproject/qt/android/QtLayout.java index a234f921d3..3c01c76400 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtLayout.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtLayout.java @@ -90,8 +90,16 @@ public class QtLayout extends ViewGroup final DisplayMetrics appMetrics = new DisplayMetrics(); display.getMetrics(appMetrics); - appWidth = appMetrics.widthPixels; - appHeight = appMetrics.heightPixels; + final WindowInsets rootInsets = getRootWindowInsets(); + + insetLeft = rootInsets.getStableInsetLeft(); + insetTop = rootInsets.getStableInsetTop(); + + int insetsWidth = rootInsets.getStableInsetRight() + rootInsets.getStableInsetLeft(); + int insetsHeight = rootInsets.getStableInsetTop() + rootInsets.getStableInsetBottom(); + + appWidth = appMetrics.widthPixels - insetsWidth; + appHeight = appMetrics.heightPixels - insetsHeight; final DisplayMetrics maxMetrics = new DisplayMetrics(); display.getRealMetrics(maxMetrics); @@ -104,9 +112,6 @@ public class QtLayout extends ViewGroup ydpi = appMetrics.ydpi; scaledDensity = appMetrics.scaledDensity; - final WindowInsets rootInsets = getRootWindowInsets(); - insetLeft = rootInsets.getSystemWindowInsetLeft(); - insetTop = rootInsets.getSystemWindowInsetTop(); } else { // after API 30 use getCurrentWindowMetrics for application metrics // getMaximumWindowMetrics for the screen metrics @@ -115,10 +120,10 @@ public class QtLayout extends ViewGroup display = activity.getDisplay(); final WindowMetrics appMetrics = windowManager.getCurrentWindowMetrics(); + final WindowMetrics maxMetrics = windowManager.getMaximumWindowMetrics(); final WindowInsets windowInsets = appMetrics.getWindowInsets(); - Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars() - | WindowInsets.Type.displayCutout()); + Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.tappableElement()); insetLeft = insets.left; insetTop = insets.top; @@ -126,10 +131,14 @@ public class QtLayout extends ViewGroup int insetsWidth = insets.right + insets.left; int insetsHeight = insets.top + insets.bottom; + if (h == maxMetrics.getBounds().height()){ + //when h == maxheight the system is ignoring insets + insetsWidth = insetsHeight = insetLeft = insetTop = 0; + } + appWidth = appMetrics.getBounds().width() - insetsWidth; appHeight = appMetrics.getBounds().height() - insetsHeight; - final WindowMetrics maxMetrics = windowManager.getMaximumWindowMetrics(); maxWidth = maxMetrics.getBounds().width(); maxHeight = maxMetrics.getBounds().height(); |