From fae7daf04bfb00145d3e22e8c5e800cc1a0e3497 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Date: Mon, 15 Dec 2025 18:02:38 +0100 Subject: [PATCH] [android] Fix camera cutout offset in navigation Signed-off-by: Jean-Baptiste --- .../app/organicmaps/routing/NavigationController.java | 8 +++++--- .../app/src/main/java/app/organicmaps/util/UiUtils.java | 6 ++++++ android/app/src/main/res/layout-land/layout_nav_top.xml | 6 +++--- android/app/src/main/res/layout/layout_nav_top.xml | 6 +++--- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/android/app/src/main/java/app/organicmaps/routing/NavigationController.java b/android/app/src/main/java/app/organicmaps/routing/NavigationController.java index 7ca7e557f..500325662 100644 --- a/android/app/src/main/java/app/organicmaps/routing/NavigationController.java +++ b/android/app/src/main/java/app/organicmaps/routing/NavigationController.java @@ -102,17 +102,19 @@ public class NavigationController implements TrafficManager.TrafficCallback, Nav final View navigationBarBackground = mFrame.findViewById(R.id.nav_bottom_sheet_nav_bar); final View nextTurnContainer = mFrame.findViewById(R.id.nav_next_turn_container); ViewCompat.setOnApplyWindowInsetsListener(mStreetFrame, (v, windowInsets) -> { - UiUtils.setViewInsetsPaddingNoBottom(v, windowInsets); + UiUtils.setViewNavigationInsetsPaddingNoBottom(v, windowInsets); final Insets safeDrawingInsets = windowInsets.getInsets(WindowInsetUtils.TYPE_SAFE_DRAWING); - nextTurnContainer.setPadding(safeDrawingInsets.left, nextTurnContainer.getPaddingTop(), - nextTurnContainer.getPaddingEnd(), nextTurnContainer.getPaddingBottom()); navigationBarBackground.getLayoutParams().height = safeDrawingInsets.bottom; // The gesture navigation bar stays at the bottom in landscape // We need to add a background only above the nav menu navigationBarBackground.getLayoutParams().width = mFrame.findViewById(R.id.nav_bottom_sheet).getWidth(); return windowInsets; }); + ViewCompat.setOnApplyWindowInsetsListener(turnFrame, (v, windowInsets) -> { + UiUtils.setViewNavigationInsetsPaddingNoBottom(v, windowInsets); + return windowInsets; + }); } private void updateVehicle(@NonNull RoutingInfo info) diff --git a/android/app/src/main/java/app/organicmaps/util/UiUtils.java b/android/app/src/main/java/app/organicmaps/util/UiUtils.java index 762973c37..830a03b18 100644 --- a/android/app/src/main/java/app/organicmaps/util/UiUtils.java +++ b/android/app/src/main/java/app/organicmaps/util/UiUtils.java @@ -281,6 +281,12 @@ public final class UiUtils view.setPadding(systemInsets.left, systemInsets.top, systemInsets.right, view.getPaddingBottom()); } + public static void setViewNavigationInsetsPaddingNoBottom(View view, WindowInsetsCompat windowInsets) + { + final Insets systemInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout()); + view.setPadding(systemInsets.left, systemInsets.top, systemInsets.right, view.getPaddingBottom()); + } + public static void setupNavigationIcon(@NonNull MaterialToolbar toolbar, @NonNull View.OnClickListener listener) { View customNavigationButton = toolbar.findViewById(R.id.back); diff --git a/android/app/src/main/res/layout-land/layout_nav_top.xml b/android/app/src/main/res/layout-land/layout_nav_top.xml index 1d7bef433..90560821d 100644 --- a/android/app/src/main/res/layout-land/layout_nav_top.xml +++ b/android/app/src/main/res/layout-land/layout_nav_top.xml @@ -11,13 +11,13 @@ diff --git a/android/app/src/main/res/layout/layout_nav_top.xml b/android/app/src/main/res/layout/layout_nav_top.xml index 4587fc510..8cc7d0307 100644 --- a/android/app/src/main/res/layout/layout_nav_top.xml +++ b/android/app/src/main/res/layout/layout_nav_top.xml @@ -11,13 +11,13 @@