Skip to content

Add An Immersive Mode Option That Hides Both The Status Bar And Navigation Bar #42

Closed

Description

@uNyanda
  • Date: 2026-08-31
  • Type: Enhancement
  • Priority: Low

Problem

ZenNotes currently provides an option to hide the status bar, but the navigation bar remains visible. This prevents the app UI from occupying the entire screen.

Proposed Enhancement

Add an Immersive Mode option that hides both the status bar and navigation bar.

The system bars should still be temporarily revealed through the standard Android edge-swipe gesture and automatically hidden again after being revealed.

Considerations

Immersive Mode should use Android's standard transient system-bar behaviour so that users can temporarily reveal the system bars when needed.

Possible Implementation

Use WindowInsetsControllerCompat to hide WindowInsetsCompat.Type.systemBars() and set systemBarsBehaviour to BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE. This would hide both the status bar and navigation bar while allowing them to be temporarily revealed through an edge-swipe gesture.

The window should also use transparent system-bar colours and edge-to-edge layout so that hiding the bars does not leave their configured background colours visible.

Rationale

Allowing both system bars to be hidden would provide a more complete fullscreen experience and allow the app UI to occupy the entire screen.

Current Workaround

The current Hide Status Bar option can hide the status bar, but the navigation bar remains visible.

Additional Context

When the status bar is hidden, its configured background colour still remains visible as a solid area. The navigation bar also retains its configured background colour. Immersive Mode should ensure that both system-bar areas are transparent rather than leaving solid background-colour blocks around the app UI.

Activity

  1. added a commit that references this issue on Sep 1, 2026
  2. adibhanna commented on Sep 1, 2026

    @adibhanna
    Contributor

    Shipped in 1.1.14 (versionCode 16), submitted to Play today — implemented in e11f1d6, via PR #44.

    Settings → Appearance → System bars now has three choices: Shown, No status bar (the previous Hide-status-bar behavior), and Immersive, which hides the navigation bar too so the app UI gets the entire screen.

    Implementation matched the proposal almost exactly:

    • The navigation bar is hidden through Capacitor 8 core's built-in SystemBars plugin, which drives WindowInsetsControllerCompat.hide(Type.navigationBars()) — no new native code needed.
    • BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE was already set once in MainActivity (from Hide Status Bar For A Fullscreen Experience  #22) and covers all system bars, so a swipe from a hidden bar's edge reveals it transiently and it auto-hides again.
    • On the transparency point: with targetSdk 36 the app is edge-to-edge and Capacitor's insets pipeline re-applies on every change, so hidden bars leave no solid background-colour strips, and transiently revealed bars draw translucent over the content. (The one strip that can remain is the display-cutout inset in portrait — content deliberately stays clear of the camera cutout, same as the existing status-bar option.)
    • The preference rides the existing zn:hide-status-bar storage key ('1' still means status-bar-hidden, 'immersive' is new), so existing users keep their setting across the upgrade.

    Verified on the API 35 emulator with both 3-button and gesture navigation: all three modes, transient reveal + auto-hide, keyboard/toolbar docking under immersive, and persistence across cold start.

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