Skip to content

Bottom navigation disappears on API 36+ #488

Description

@dlcole

I started this issue in Discord but am creating an issue here to better capture the related information.

My app uses:
nativescript 9.1.1
@nativescript/android 9.1.1
@nativescript-community/ui-material-bottom-navigation 7.3.2

On Android API 36 and 37 the bottom navigation disappears. CoPilot suggests this is an edge-to-edge issue, but so far no changes to the various styles.xml files make any difference.

Here's one of the styles for API 36:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Android 15/16 edge-to-edge fix: keep the Material BottomNavigation visible above the system nav bar. -->
    <style name="AppThemeBase36" parent="AppThemeBase35">
        <item name="android:windowTranslucentNavigation">false</item>
        <item name="android:fitsSystemWindows">true</item>
        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
        <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
    </style>

    <style name="AppTheme" parent="AppThemeBase36">
    </style>

</resources>

Any suggestions here? I have to believe other folks have already encountered this.

Edit 9/10/2026:

This addition to onLoaded() for the main page did the trick:

 if (isAndroid) {
    // Make bottom navigation bar visible on Android 11+ (API 30+) devices. 
    if (android.os.Build.VERSION.SDK_INT >= 30) {
      application.android.foregroundActivity.getWindow().setDecorFitsSystemWindows(true);
    }
}

Edit 9/13/2026:

I stand corrected. The above fix works with targetSdkVersion 35 but not with 36 or 37, and Google Play now requires a version greater than 35 . This is an edge-to-edge issue, and I know 9.1 made changes for this. Still searching (and welcoming any pointers)

Edit 09/14/2026:

With considerable effort, I now have bottom navigation visible and the status bar / action bar properly displayed on API 36 and 37. With API 35, however, the action bar is underneath the status bar, and I haven't found a change that corrects that without loosing bottom navigation.

Here's a quick summary of your changes:

In app-root.xml:
<Frame defaultPage="/views/main-page" androidOverflowEdge="dont-apply" >

In main-page.xml:
<Page androidOverflowEdge="top" ...

<mdt:BottomNavigation selectedIndex="0" id="btmnav" androidOverflowEdge="top" >

On every other -page.xml:

<Page androidOverflowEdge="top" ...

On every other -page.js where the layout starts with a StackLayout, in onLoaded:

myutils.removeAndroidTopInset(page);

In myutils.js:

export function removeAndroidTopInset(page) {
  if (!global.isAndroid || !page?.content || android.os.Build.VERSION.SDK_INT < 35) {
    return;
  }

  const activity = utils.android.getCurrentActivity();
  if (!activity) {
    return;
  }

  const statusTop = activity
    .getWindowManager()
    .getCurrentWindowMetrics()
    .getWindowInsets()
    .getInsets(android.view.WindowInsets.Type.statusBars())
    .top;

  page.content.style.marginTop = -utils.layout.toDeviceIndependentPixels(statusTop);
}

I've carefully read @wwalkerrun 's links at https://discord.com/channels/603595811204366337/603595811720527881/1525559623321522378 but haven't been able to use Utils.android.enableEdgeToEdge() to affect any changes.

After working on this for a week, my main questions is whether the changes I describe above is the right approach, or whether I really need to be making insets myself. If so, I would love to have some kind of pointer for how to do this when using @nativescript-community/ui-material-bottom-navigation.

{N} and all platforms and plugins are at the latest current level.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions