From 5cf66c907a8712eacb29b87b7285c329a932dffd Mon Sep 17 00:00:00 2001 From: eranl <1707552+eranl@users.noreply.github.com> Date: Sat, 5 Apr 2025 20:47:10 +0300 Subject: [PATCH] Add bottom inset padding on Android15+ --- .../keyboard/internal/KeyboardParams.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java index 56e3ebe6..50ba0dad 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyboardParams.java @@ -8,9 +8,14 @@ package helium314.keyboard.keyboard.internal; import android.content.Context; import android.content.res.TypedArray; +import android.graphics.Insets; +import android.os.Build; import android.util.AttributeSet; import android.util.SparseIntArray; +import android.view.WindowInsets; +import android.view.WindowManager; +import android.view.WindowMetrics; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -225,6 +230,16 @@ public class KeyboardParams { mBottomPadding = (int) (keyboardAttr.getFraction( R.styleable.Keyboard_keyboardBottomPadding, height, height, 0) * Settings.getValues().mBottomPaddingScale); + + if (Build.VERSION.SDK_INT >= 35) { + WindowManager wm = context.getSystemService(WindowManager.class); + WindowMetrics windowMetrics = wm.getCurrentWindowMetrics(); + WindowInsets windowInsets = windowMetrics.getWindowInsets(); + int insetTypes = WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout(); + Insets insets = windowInsets.getInsetsIgnoringVisibility(insetTypes); + mBottomPadding += insets.bottom; + } + mLeftPadding = (int) (keyboardAttr.getFraction( R.styleable.Keyboard_keyboardLeftPadding, width, width, 0) * Settings.getValues().mSidePaddingScale);