From 545c4f27f9a6f19e67c3c8061ae310dce5f5bc75 Mon Sep 17 00:00:00 2001 From: Joel Arvidsson Date: Mon, 6 Nov 2023 19:03:46 +0100 Subject: [PATCH] feat(constants): add navigationBarHeight to getConstants() --- .../com/reactnativenavigation/react/Constants.java | 1 + .../react/NavigationModule.java | 2 ++ .../com/reactnativenavigation/utils/UiUtils.java | 13 +++++++++++++ lib/ios/Constants.m | 3 ++- lib/src/adapters/Constants.ts | 3 +++ 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/react/Constants.java b/lib/android/app/src/main/java/com/reactnativenavigation/react/Constants.java index 8af0e081b42..747f46538b7 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/react/Constants.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/react/Constants.java @@ -7,4 +7,5 @@ public class Constants { public static final String STATUS_BAR_HEIGHT_KEY = "statusBarHeight"; public static final String TOP_BAR_HEIGHT_KEY = "topBarHeight"; public static final String BOTTOM_TABS_HEIGHT_KEY = "bottomTabsHeight"; + public static final String NAVIGATION_BAR_HEIGHT_KEY = "navigationBarHeight"; } diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java b/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java index a34598c6651..d6b274c80c8 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java @@ -96,6 +96,8 @@ private WritableMap createNavigationConstantsMap() { constants.putDouble(Constants.BOTTOM_TABS_HEIGHT_KEY, pxToDp(ctx, UiUtils.getBottomTabsHeight(ctx))); constants.putDouble(Constants.STATUS_BAR_HEIGHT_KEY, pxToDp(ctx, SystemUiUtils.getStatusBarHeight(currentActivity))); constants.putDouble(Constants.TOP_BAR_HEIGHT_KEY, pxToDp(ctx, UiUtils.getTopBarHeight(ctx))); + constants.putDouble(Constants.NAVIGATION_BAR_HEIGHT_KEY, + pxToDp(ctx, UiUtils.getNavigationBarHeight(ctx))); return constants; } diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/utils/UiUtils.java b/lib/android/app/src/main/java/com/reactnativenavigation/utils/UiUtils.java index 3d202ca4576..db47373dc7b 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/utils/UiUtils.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/utils/UiUtils.java @@ -15,9 +15,11 @@ public class UiUtils { private static final int DEFAULT_TOOLBAR_HEIGHT = 56; private static final int DEFAULT_BOTTOM_TABS_HEIGHT = 56; + private static final int DEFAULT_NAVIGATION_BAR_HEIGHT = 0; private static int topBarHeight = -1; private static int bottomTabsHeight = -1; + private static int navigationBarHeight = -1; public static void runOnPreDrawOnce(@Nullable final T view, final Functions.Func1 task) { if (view == null) return; @@ -134,6 +136,17 @@ public static int getBottomTabsHeight(Context context) { return bottomTabsHeight; } + public static int getNavigationBarHeight(Context context) { + if (navigationBarHeight > 0) { + return navigationBarHeight; + } + final Resources resources = context.getResources(); + final int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); + navigationBarHeight = resourceId > 0 ? resources.getDimensionPixelSize(resourceId) + : dpToPx(context, DEFAULT_NAVIGATION_BAR_HEIGHT); + return navigationBarHeight; + } + public static float dpToPx(Context context, float dp) { Resources resources = context.getResources(); return dpToPx(resources.getDisplayMetrics(), dp); diff --git a/lib/ios/Constants.m b/lib/ios/Constants.m index c798bd5ba8f..521fd985a94 100644 --- a/lib/ios/Constants.m +++ b/lib/ios/Constants.m @@ -7,7 +7,8 @@ + (NSDictionary *)getConstants { return @{ @"topBarHeight" : @([self topBarHeight]), @"statusBarHeight" : @([self statusBarHeight]), - @"bottomTabsHeight" : @([self bottomTabsHeight]) + @"bottomTabsHeight" : @([self bottomTabsHeight]), + @"navigationBarHeight" : @(0) }; } diff --git a/lib/src/adapters/Constants.ts b/lib/src/adapters/Constants.ts index 7a582e89c95..3a9a3702064 100644 --- a/lib/src/adapters/Constants.ts +++ b/lib/src/adapters/Constants.ts @@ -5,6 +5,7 @@ export interface NavigationConstants { backButtonId: string; topBarHeight: number; bottomTabsHeight: number; + navigationBarHeight: number; } export class Constants { @@ -22,11 +23,13 @@ export class Constants { public readonly backButtonId: string; public readonly topBarHeight: number; public readonly bottomTabsHeight: number; + public readonly navigationBarHeight: number; private constructor(constants: NavigationConstants) { this.statusBarHeight = constants.statusBarHeight; this.topBarHeight = constants.topBarHeight; this.backButtonId = constants.backButtonId; this.bottomTabsHeight = constants.bottomTabsHeight; + this.navigationBarHeight = constants.navigationBarHeight; } }