diff options
| author | Jules Aguillon | 2024-05-29 12:00:41 +0200 |
|---|---|---|
| committer | GitHub | 2024-05-29 12:00:41 +0200 |
| commit | 93d58571cc813004d6741489f001c6013cc3b296 (patch) | |
| tree | 4fac40c1d58daf5d754e4d52457d11d27d20b83d /srcs/juloo.keyboard2/Keyboard2View.java | |
| parent | 1a290f96f26b848a217ee5db3d6d5920c7c38a27 (diff) | |
| download | unexpected-keyboard-93d58571cc813004d6741489f001c6013cc3b296.tar.gz unexpected-keyboard-93d58571cc813004d6741489f001c6013cc3b296.zip | |
Fix overflow due to navigation on the right and cutouts (#641)
Take display cutouts and navigation bars when computing the keyboard
width on SDK >= 30.
Diffstat (limited to 'srcs/juloo.keyboard2/Keyboard2View.java')
| -rw-r--r-- | srcs/juloo.keyboard2/Keyboard2View.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/srcs/juloo.keyboard2/Keyboard2View.java b/srcs/juloo.keyboard2/Keyboard2View.java index 2eea6ea..36ea2be 100644 --- a/srcs/juloo.keyboard2/Keyboard2View.java +++ b/srcs/juloo.keyboard2/Keyboard2View.java @@ -3,6 +3,7 @@ package juloo.keyboard2; import android.content.Context; import android.content.ContextWrapper; import android.graphics.Canvas; +import android.graphics.Insets; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.RectF; @@ -13,6 +14,9 @@ import android.util.DisplayMetrics; import android.view.MotionEvent; import android.view.View; import android.view.Window; +import android.view.WindowInsets; +import android.view.WindowManager; +import android.view.WindowMetrics; import java.util.Arrays; public class Keyboard2View extends View @@ -256,6 +260,17 @@ public class Keyboard2View extends View int height = (int)(_config.keyHeight * _keyboard.keysHeight + _config.marginTop + _config.margin_bottom); + // Compatibility with display cutouts and navigation on the right + if (VERSION.SDK_INT >= 30) + { + WindowMetrics metrics = + ((WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE)) + .getCurrentWindowMetrics(); + Insets insets = metrics.getWindowInsets().getInsetsIgnoringVisibility( + WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars() + | WindowInsets.Type.displayCutout()); + width = metrics.getBounds().width() - insets.right - insets.left; + } setMeasuredDimension(width, height); _keyWidth = (width - (_config.horizontal_margin * 2)) / _keyboard.keysWidth; } |
