ns-android-edge-to-edge

Installation
SKILL.md

Android edge-to-edge insets (API 35+)

Core 9.1+ auto-enables edge-to-edge on every Activity (enableEdgeToEdge(activity) runs in onActivityCreated — you never call it yourself). The window spans the full screen; insets decide who pads. Three facts that are easy to get backwards:

  1. androidOverflowEdge lists the edges a view OVERFLOWS — i.e. SKIPS padding for. "bottom" means "do NOT pad the bottom; extend under the bar there", not "apply bottom". Consequently "all-but-bottom" pads only the bottom — set that on your root and your header dives under the status bar. none and ignore are effectively no-ops (native flag 0), not "apply everything".
  2. Only the app's root view applies insets by default. Inner GridLayouts/StackLayouts do not auto-pad, and (as of core 9.1.0-alpha.11) the androidOverflowInset event never fires on page-level layouts even with dont-apply set — the dispatch doesn't reach that deep. Don't build a plan that depends on it; read the window insets directly (Recipe B).
  3. Material widgets' own inset handling never runs under core. BottomNavigationView ships an inset listener that would pad its content above the gesture strip — but core consumes window insets at the app root, so they never dispatch down and that listener never fires. Any inset the bar needs must be read and applied manually. The strip can still look seamless whenever the bar's row touches the screen bottom — don't let that fool you into thinking the widget handled it.

Valid androidOverflowEdge tokens (comma-separable bitmask): none, ignore, left, top, right, bottom, <edge>-dont-consume, all-but-<edge>, dont-apply. For the full inset model (and the fullscreen-modal trap, which is its own window), see ns-android-window-insets.

Recipe A — seamless bottom tab bar (the strip matches the bar)

Tell the root view (and any wrapper between it and the tab view) to skip the bottom inset so it reaches the Material bar; the bar's background then fills the gesture strip because its row touches the screen bottom:

<!-- app root -->
<RootLayout class="app-background" androidOverflowEdge="bottom">
  <Frame defaultPage="views/shell/shell-page" />
</RootLayout>
Installs
19
GitHub Stars
1
First Seen
Aug 28, 2026
ns-android-edge-to-edge — nativescript/skills