React Native lets you customize the navigation bar for Android.

Overview

react-native-system-navigation-bar

React Native lets you customize the navigation bar for Android.

Hide
Lean Back
Immersive
Sticky Immersive
Low Profile
Navigation Color
Navigation Bar Divider Color
Light Navigation Bar

Installation

yarn add react-native-system-navigation-bar

Usage

navigationHide()

Hides the navigation bar.

import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.navigationHide()

navigationShow()

Shows the navigation bar.

import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.navigationShow()

leanBack()

For full screen experience where the user will not interact heavily with the screen. You can browse the documentation for more information.

import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.leanBack()

immersive()

The immersive mode is intended for apps in which the user will be heavily interacting with the screen. You can browse the documentation for more information.

import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.immersive()

stickyImmersive()

In the regular immersive mode, any time a user swipes from an edge, the system takes care of revealing the system bars—your app won't even be aware that the gesture occurred. You can browse the documentation for more information.

import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.stickyImmersive()

lightNavigationBar()

Navigation bar and status changes to bar style.

Type Reqired Default
boolean No false
import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.lightNavigationBar(true)

fullScreen()

Hide or show the navigation bar and the status bar.

Type Reqired Default
boolean No false
import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.fullScreen(true)

lowProfile()

The icons in the system and navigation bar are visually retracted. You can browse the documentation for more information.

import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.lowProfile()

setNavigationColor()

Changes the color of the navigation bar. It also changes the style of the status bar and navigation bar to dark or light.

Name Type Reqired Default
Color RGB - HSL - Color Ints Yes
Light Bar boolean No false
import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.setNavigationColor("red")
SystemNavigationBar.setNavigationColor("#FF0000", true)
SystemNavigationBar.setNavigationColor(0xff00ff00, false)
SystemNavigationBar.setNavigationColor("hsla(110, 56%, 49%, 0.5)")

setNavigationBarDividerColor()

Only API Level 28 (Android 9) and higher is supported.

Shows a thin line of the specified color between the navigation bar and the app content. You can browse the documentation for more information.

Name Type Reqired
Color RGB - HSL - Color Ints Yes
import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.setNavigationBarDividerColor("red")
SystemNavigationBar.setNavigationBarDividerColor("#FF0000")
SystemNavigationBar.setNavigationBarDividerColor(0xff00ff00)
SystemNavigationBar.setNavigationBarDividerColor("hsla(110, 56%, 49%, 0.5)")

setNavigationBarContrastEnforced()

Only API Level 29 (Android 10) and higher is supported.

Sets whether the system should ensure that the navigation bar has enough contrast when a fully transparent background is requested. You can browse the documentation for more information.

Type Reqired Default
boolean No false
import SystemNavigationBar from "react-native-system-navigation-bar";

SystemNavigationBar.setNavigationBarContrastEnforced(true)

And

All functions have callbacks.

Usage

{ const result = await SystemNavigationBar.navigationShow() console.log("Show: ", result) //true or Error Message } ">
import SystemNavigationBar from "react-native-system-navigation-bar";

const show = async () => {
  const result = await SystemNavigationBar.navigationShow()

  console.log("Show: ", result) //true or Error Message
}

License

MIT

Comments
  • Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference

    Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference

    Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference at com.reactnativesystemnavigationbar.SystemNavigationBarModule.lambda$setSystemUIFlags$3$com-reactnativesystemnavigationbar-SystemNavigationBarModule(SystemNavigationBarModule.java:245) at com.reactnativesystemnavigationbar.SystemNavigationBarModule$$ExternalSyntheticLambda3.run(:6) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:6981) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)

    opened by ashishHp1 3
  • Error possibly caused by SystemNavigationBarModule.setNavigationColor

    Error possibly caused by SystemNavigationBarModule.setNavigationColor

    My React Native (not Expo) app is reporting several crashes (via Firebase Crashlytics) which appear related to this module (1.0.2):

    Fatal Exception: java.lang.NullPointerException
    Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference
    
    com.reactnativesystemnavigationbar.SystemNavigationBarModule.setNavigationColor (SystemNavigationBarModule.java:105)
    

    This error never occurred before using this module. It's happening across Android versions 10, 11, 12.

    From reading that error log it kind of sounds like setNavigationColor is being called too soon? I'm calling it like SystemNavigationBar.setNavigationColor("#FDF7F5", false) from inside a useEffect where I'd assume it should be fine to do so.

    opened by nickmcmillan 3
  • Bug > When using with notifee the app crash

    Bug > When using with notifee the app crash

    Hi guys! FIrst of all thank you for this project! After integration with notifee and firebase cloud messaging background handler, i have found this bug:

    2022-10-28 14:09:01.178 13660-13660/app.vidit E/AndroidRuntime: FATAL EXCEPTION: main
        Process: app.vidit, PID: 13660
        java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference
            at com.reactnativesystemnavigationbar.SystemNavigationBarModule.lambda$setSystemUIFlags$3$com-reactnativesystemnavigationbar-SystemNavigationBarModule(SystemNavigationBarModule.java:245)
            at com.reactnativesystemnavigationbar.SystemNavigationBarModule$$ExternalSyntheticLambda3.run(Unknown Source:6)
            at android.os.Handler.handleCallback(Handler.java:938)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loopOnce(Looper.java:226)
            at android.os.Looper.loop(Looper.java:313)
            at android.app.ActivityThread.main(ActivityThread.java:8751)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
    

    i was easily fixed that with adding the following code to the native module(for every function that check for the view):

                if(getCurrentActivity() == null) {
                  return;
                }
    
    opened by TacticCoder 2
  • problem when used with StatusBar component

    problem when used with StatusBar component

    I am using this property and it changes depending on if I have dark mode enabled

    SystemNavigationBar.setNavigationColor(0xff00ff00, false);
    

    when I have a <StatusBar /> with backgroundColor and barStyle defined, my <StatusBar /> ignore my custom barStyle and change status icons colors with that function

    I have a screen that in its light mode uses a dark color at the top, when the function sets the dark icons become unreadable

    I don't know if there is currently any way to handle this problem

    Thank you very much for sharing this library.

    opened by Pkcarreno 2
  • Question on API Level checks.

    Question on API Level checks.

    Thank you for the library, it works great, exactly what we need!

    Just a quick question. Are the functions that are only supported by higher level of Android APIs causing an app to crash? To rephrase, do I need to check the API Level before the call, or are you checking it manually inside the code?

    Example of the feature is here: setNavigationBarDividerColor() Only API Level 28 (Android 9) and higher is supported.

    Thanks!

    opened by nornewman 2
  • chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • fix(set-navigation-color): call promise callback only once

    fix(set-navigation-color): call promise callback only once

    Hello there. We are experiencing rare native crashes in setNavigationColor function:

    java.lang.RuntimeException: Illegal callback invocation from native module. This callback type only permits a single invocation from native code.
        at com.facebook.react.bridge.CallbackImpl.invoke(CallbackImpl.java:4)
        at com.facebook.react.bridge.PromiseImpl.resolve(PromiseImpl.java:2)
        at com.reactnativesystemnavigationbar.SystemNavigationBarModule.lambda$setModeStyle$4(SystemNavigationBarModule.java:10)
        at com.reactnativesystemnavigationbar.SystemNavigationBarModule.c
        at aa.e.run
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:226)
        at android.app.ActivityThread.main(ActivityThread.java:7224)
        at java.lang.reflect.Method.invoke(Method.java)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:500)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:913)
    

    This is probably caused by the setModeStyle internal call, because it accepts promise, so that when parent function has finished it calls promise.resolve second time. This is fixed by overloading setModeStyle without promise, so that we can call it from UI thread directly.

    opened by zolbooo 1
  • fix: race condition when checking current activity

    fix: race condition when checking current activity

    We were experiencing some crashes caused by the NullPointerException raised in the library in production.

    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference
        at com.reactnativesystemnavigationbar.SystemNavigationBarModule.setNavigationColor(SystemNavigationBarModule.java:1)
        at java.lang.reflect.Method.invoke(Method.java)
        at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:18)
        at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:13)
        at com.facebook.react.bridge.queue.NativeRunnable.run(NativeRunnable.java)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:1)
        at android.os.Looper.loopOnce(Looper.java:210)
        at android.os.Looper.loop(Looper.java:299)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:8)
        at java.lang.Thread.run(Thread.java:920)
    

    It appears that Activity was stopped before setNavigationColor call.

    - ui.lifecycle {
      screen: MainActivity, 
      state: stopped
    }
    - ui.lifecycle {
      screen: MainActivity, 
      state: saveInstanceState
    }
    - NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference
    

    There is an issue in the code below:

    if (getCurrentActivity() == null) {
             promise.reject("Error: ", "false");
             return;
    }
    final Window view = getCurrentActivity().getWindow();
    

    Because getCurrentActivity() result is not saved, current activity may be replaced by null after if condition worked, which is exactly what happens before the crash. For example, Happy path: App working -> setNavigationColor() -> app stops -> if getCurrentActivity() == null is true -> return. Edge case: App working -> setNavigationColor() -> if getCurrentActivity() == null is FALSE -> app stops -> getCurrentActivity().getWindow() -> NPE.

    In the edge case NPE happens because app is already stopped, so that getCurrentActivity() returns null and then getWindow() is called on the null instance.

    This PR saves getCurrentActivity() result into the variable, so that Activity.getWindow() never raises a NPE.

    opened by zolbooo 1
  • java.lang.NullPointerException: Attempt to invoke virtual method 'and…

    java.lang.NullPointerException: Attempt to invoke virtual method 'and…

    …roid.view.Window android.app.Activity.getWindow()' on a null object reference

    Since getCurrentActivity() is null, it cannot fetch view and gives an error. This was fixed by checking the issue. and the minimum pack was kept as 21.

    opened by cemocanon 1
  • fix(build): use ext options from root project

    fix(build): use ext options from root project

    React Native template already provides buildToolsVersion, minSdkVersion, compileSdkVersion and targetSdkVersion ext options, so I think that build.gradle should not use SystemNavigationBar_ prefixed options. This may cause some inconsistencies in build process.

    opened by zolbooo 1
  • Activity.getWindow() is null

    Activity.getWindow() is null

    Attempt to invoke virtual method 'android.view.Window android.app.Activity.getWindow()' on a null object reference at com.reactnativesystemnavigationbar.SystemNavigationBarModule.setNavigationColor

    opened by cemocanon 1
  • Error: NavigationBar is null (Expo)

    Error: NavigationBar is null (Expo)

    When trying to call setNavigationColor I get [Unhandled promise rejection: TypeError: null is not an object (evaluating 'NavigationBar.NO_MODE')].

      import SystemNavigationBar from "react-native-system-navigation-bar";
    
      useEffect(() => {
        const changeNavigationBar = async () => {
          try {
            const result = await SystemNavigationBar.setNavigationColor("red");
            console.log("Result:", result);
          } catch (error) {
            console.error("Error:", error);
          }
        };
        changeNavigationBar();
      }, []);
    

    Deps:

        "expo": "~47.0.9",
        "react": "18.1.0",
        "react-dom": "18.1.0",
        "react-native": "0.70.5",
        "react-native-system-navigation-bar": "^2.1.0",
    

    Error:

    image

    Clues:

    Seems something there:

    import { NativeModules, Platform, processColor } from 'react-native';
    
    // NaviagationBar is null
    const { NavigationBar } = NativeModules;
    
    // ...
    
    const setNavigationColor = async (
      color: string | number,
      style?: 'light' | 'dark',
      bar?: 'navigation' | 'status' | 'both'
    ) => {
      if (Platform.OS === 'android') {
        const { modeStyle, mode } = getBarModeTypes(style, bar);
        return await NavigationBar.setNavigationColor(
          color === 'translucent' ? 0 : processColor(color),
          color === 'translucent',
          modeStyle,
          mode
        );
      }
    };
    

    Does it work this expo at all? Or I need to use this: https://docs.expo.dev/versions/latest/sdk/navigation-bar/

    opened by nezort11 1
  • Unable to use in latest React Native version (in version `2.1.0`)

    Unable to use in latest React Native version (in version `2.1.0`)

    When running an application using the latest version of this dependency with the latest version of React Native, the following error appears:

    error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
    Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Could not determine the dependencies of task ':react-native-system-navigation-bar:compileDebugAidl'.
    > Could not resolve all task dependencies for configuration ':react-native-system-navigation-bar:debugCompileClasspath'.
       > Could not find com.facebook.react:react-native:0.68.2.
         Required by:
             project :react-native-system-navigation-bar
    
    * Try:
    > Run with --stacktrace option to get the stack trace.
    > Run with --info or --debug option to get more log output.
    > Run with --scan to get full insights.
    
    * Get more help at https://help.gradle.org
    
    BUILD FAILED in 4s
    
    info Run CLI with --verbose flag for more details.
    error Command failed with exit code 1.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    

    Seems to be releated to the following commit https://github.com/kadiraydinli/react-native-system-navigation-bar/commit/97653186f28c0276106eca6e0716a45c416b3340 Is there a reason to hardcode the react native version to 0.68.2 in this dependency? Trying to understand this change, as I'm using react native version 0.70.6 and it does not seem to work, but it is working in the previous version of this library. For now I'll just pin it to 2.0.1

    opened by BenJeau 1
  • Error: false -  in Release Mode

    Error: false - in Release Mode

    Error is triggered by this function

    await SystemNavigationBar.setNavigationColor(theme.colors.barColor);

    Error Message in Sentry

    Error: false
      at promiseMethodWrapper(node_modules/react-native/Libraries/BatchedBridge/NativeModules.js:105:60)
      at setNavigationColor(node_modules/react-native-system-navigation-bar/src/index.tsx:84:7)
      at next(native)
      at asyncGeneratorStep(node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
      at _next(node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:57)
      at anonymous(node_modules/@babel/runtime/helpers/asyncToGenerator.js:20:14)
      at tryCallTwo(node_modules/promise/setimmediate/core.js:44:3)
      at tryCallTwo$argument_1(node_modules/promise/setimmediate/core.js:204:6)
      at Promise(node_modules/promise/setimmediate/core.js:66:3)
      at anonymous(node_modules/@babel/runtime/helpers/asyncToGenerator.js:19:24)
      at apply(native)
      at <global>(node_modules/react-native-system-navigation-bar/src/index.tsx:75:25)
      at show(src/infrastructure/navigation/Navigation.js:88:62)
      at next(native)
      at asyncGeneratorStep(node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
      at _next(node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:57)
      at anonymous(node_modules/@babel/runtime/helpers/asyncToGenerator.js:20:14)
      at tryCallTwo(node_modules/promise/setimmediate/core.js:44:3)
      at tryCallTwo$argument_1(node_modules/promise/setimmediate/core.js:204:6)
      at Promise(node_modules/promise/setimmediate/core.js:66:3)
      at anonymous(node_modules/@babel/runtime/helpers/asyncToGenerator.js:19:24)
      at apply(native)
      at Nav(src/infrastructure/navigation/Navigation.js:87:13)
      at Nav(src/infrastructure/navigation/Navigation.js:121:5)
      at commitHookEffectListMount(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:5827:31)
      at flushPassiveEffects(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7532:23)
      at commitRootImpl(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:7371:7)
      at G(node_modules/scheduler/cjs/scheduler.production.min.js:13:205)
      at J(node_modules/scheduler/cjs/scheduler.production.min.js:14:128)
      at apply(native)
      at queueReactNativeMicrotask(node_modules/react-native/Libraries/Core/Timers/JSTimers.js:248:35)
      at _callTimer(node_modules/react-native/Libraries/Core/Timers/JSTimers.js:114:15)
      at _callReactNativeMicrotasksPass(node_modules/react-native/Libraries/Core/Timers/JSTimers.js:162:41)
      at callReactNativeMicrotasks(node_modules/react-native/Libraries/Core/Timers/JSTimers.js:413:12)
      at __callReactNativeMicrotasks(node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:390:42)
      at __guard$argument_0(node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:132:39)
      at __guard(node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:366:7)
      at flushedQueue(node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:131:18)
      at callFunctionReturnFlushedQueue(node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:116:29)
    

    Error Detail link: https://sentry.io/share/issue/766768c8245e48a797726dcad8bca33f/

    My Dependencies

     "react-native-system-navigation-bar": "^2.0.0",
     "react": "18.1.0",
     "react-native": "0.70.0",
    

    Some Affected devices Xiaomi Redmi S2 (Android 9) Nokia 3.4 (Android 12) vivo 1806 (Android 10) Xiaomi Redmi 9 (Android 10)

    I look forward to your help, thanks.

    opened by huseyintamer 2
  • Dark navigation bar doesn't work

    Dark navigation bar doesn't work

    Hi, i recently installed your library and when i want to "setNavigationColor" with "light bar" on true, buttons doesn't color in "black". I'm on react native v0.69. Can you help me please ?

    opened by Sondago 5
  • In Landscope mode, immersion does not work.

    In Landscope mode, immersion does not work.

    When user changes the orientation to landscape, the navigation bar does not disappear.

    It works only in portrait mode.

      const mode = useOrientation();
    
     const setImmer = async() => {
        const result = await SystemNavigationBar.immersive(); // does not work in landscape
      }
    
    useEffect(() => {
       if(mode === 'LANDSCAPE'){
          setTimeout(setImmer, 2000 )
        }
      }, [mode]);
    
    opened by pk936 6
Releases(v2.1.0)
  • v2.1.0(Dec 11, 2022)

    Bug Fixes

    • https://github.com/kadiraydinli/react-native-system-navigation-bar/pull/31 by @zolbooo
    • https://github.com/kadiraydinli/react-native-system-navigation-bar/commit/9c749f607212bb1385cae47bf280087df170d51b

    Changes

    • Promise reject texts have been made more understandable.
    • Code refactored.
    • com.facebook.react:react-native version fixed to 0.68.2 (https://github.com/kadiraydinli/react-native-system-navigation-bar/commit/97653186f28c0276106eca6e0716a45c416b3340)
    Source code(tar.gz)
    Source code(zip)
  • v2.0.1(Oct 31, 2022)

  • v2.0.0(Aug 18, 2022)

    Changes

    • lightNavigationBar() is deprecated. Created setBarMode() instead. Its purpose of use is the same, but its use has been made more flexible.
    • Changed the bar style parameter for the setNavigationColor() function. It can now be used as light or dark. Added an extra parameter that allows the bar mode to be valid only for StatusBar, NavigationBar or both.

    Previous Usage:

    SystemNavigationBar.setNavigationColor('red', true);
    

    Current Usage:

    SystemNavigationBar.setNavigationColor('red', 'light');
    SystemNavigationBar.setNavigationColor('red', 'dark', 'both');
    

    Bug Fixed

    https://github.com/kadiraydinli/react-native-system-navigation-bar/commit/e435d7221ace30e90191556fddebf8d2596289ef by @cemocanon

    Source code(tar.gz)
    Source code(zip)
  • v1.0.5(Jun 13, 2022)

  • v1.0.3(Mar 20, 2022)

  • v1.0.2(Jun 1, 2021)

Animated Tab Bar is an awesome navigation extension that you can use to add cool, animated and fully customizable tab navigation in your apps

Animated Tab Bar is an awesome navigation extension that you can use to add cool, animated and fully customizable tab navigation in your apps. The extension provides handy methods and properties to change the behaviour as well as the appearance of the navigation bar.

Zain Ul Hassan 4 Nov 30, 2022
A library that you can use for bottom navigation bar. Written with Jetpack Compose

FancyBottomNavigationBar A library that you can use for bottom navigation bar. W

Alperen Çevlik 3 Jul 27, 2022
🎉 [Android Library] A light-weight library to easily make beautiful Navigation Bar with ton of 🎨 customization option.

Bubble Navigation ?? A light-weight library to easily make beautiful Navigation Bars with a ton of ?? customization options. Demos FloatingTopBarActiv

Gaurav Kumar 1.7k Dec 31, 2022
An android navigation bar widget

Chip Navigation Bar A navigation bar widget inspired on Google Bottom Navigation mixed with Chips component. Usage <!-- bottom_menu.xml --> <menu xmln

Ismael Di Vita 743 Jan 1, 2023
BubbleTabBar is bottom navigation bar with customizable bubble like tabs

BubbleTabBar BubbleTabBar is bottom navigation bar with customizable bubble like tabs Usage <com.fxn.BubbleTabBar android:id="@+id/

Akshay sharma 576 Dec 30, 2022
Alligator is a modern Android navigation library that will help to organize your navigation code in clean and testable way.

Alligator Alligator is a modern Android navigation library that will help to organize your navigation code in clean and testable way. Features Any app

Artur Artikov 290 Dec 9, 2022
Android multi-module navigation built on top of Jetpack Navigation Compose

MultiNavCompose Android library for multi-module navigation built on top of Jetpack Navigation Compose. The goal of this library is to simplify the se

Jeziel Lago 21 Dec 10, 2022
DSC Moi University session on using Navigation components to simplify creating navigation flow in our apps to use best practices recommended by the Google Android Team

Navigation Components Navigate between destination using safe args How to use the navigation graph and editor How send data between destinations Demo

Breens Mbaka 6 Feb 3, 2022
[ACTIVE] Simple Stack, a backstack library / navigation framework for simpler navigation and state management (for fragments, views, or whatevers).

Simple Stack Why do I want this? To make navigation to another screen as simple as backstack.goTo(SomeScreen()), and going back as simple as backstack

Gabor Varadi 1.3k Jan 2, 2023
Navigation Component: THE BEST WAY to create navigation flows for your app

LIVE #017 - Navigation Component: A MELHOR FORMA de criar fluxos de navegação para o seu app! Código fonte do projeto criado na live #017, ensinando c

Kaique Ocanha 4 Jun 15, 2022
New style for app design simple bottom navigation with side navigation drawer UI made in Jetpack Compose.😉😎

BottomNavWithSideDrawer New style for app design simple bottom navigtaion with side navigation drawer UI made in Jetpack Compose. ?? ?? (Navigation Co

Arvind Meshram 5 Nov 24, 2022
Navigation Drawer Bottom Navigation View

LIVE #019 - Toolbar, Navigation Drawer e BottomNavigationView com Navigation Com

Kaique Ocanha 6 Jun 15, 2022
An Android library that allows you to easily create applications with slide-in menus. You may use it in your Android apps provided that you cite this project and include the license in your app. Thanks!

SlidingMenu (Play Store Demo) SlidingMenu is an Open Source Android library that allows developers to easily create applications with sliding menus li

Jeremy Feinstein 11.1k Dec 27, 2022
NTabLayout is a simple tab bar custom view under android which has click-sliding and scaling up animation effect.

NTabLayout Brief NTabLayout is a simple tab bar custom view under android which has click-sliding and scaling up animation effect. This tab bar's effe

XellossRyan 1 Oct 22, 2021
Okuki is a simple, hierarchical navigation bus and back stack for Android, with optional Rx bindings, and Toothpick DI integration.

Okuki A simple, hierarchical navigation bus and back stack for Android, with optional Rx bindings, and Toothpick integration for automatic dependency-

Cain Wong 143 Nov 25, 2022
A small navigation library for Android to ease the use of fragment transactions & handling backstack (also available for Jetpack Compose).

A small navigation library for Android to ease the use of fragment transactions & handling backstack (also available for Jetpack Compose).

Kaustubh Patange 88 Dec 11, 2022
A simple & curved & material bottom navigation for Android written in Kotlin with ♥ .

A simple & curved & material bottom navigation for Android written in Kotlin with ♥ .

Hamidreza Etebarian 1.2k Dec 30, 2022
A multi back stack android navigation

Labyrinth A multi back stack android navigation MIT License - Copyright (c) 2020 Abanoub Milad Nassief Hanna [email protected] @Linkedin @Github Scr

Abanoub Milad Nassief Hanna 6 Dec 9, 2022
A simple navigation library for Android 🗺️

Enro ??️ A simple navigation library for Android "The novices’ eyes followed the wriggling path up from the well as it swept a great meandering arc ar

Isaac Udy 216 Dec 16, 2022