Bottom Navigation widget component inspired by the Google Material Design Guidelines at https://www.google.com/design/spec/components/bottom-navigation.html

Overview

Material Bottom Navigation Library

Android Arsenal Build Status
Maven Central

Lightweight Bottom Navigation library component inspired by the Google Material Design Guidelines at https://www.google.com/design/spec/components/bottom-navigation.html

This project is also inspired by https://github.com/roughike/BottomBar


Table of contents

Installation

In your project's build.gradle file add the following line to the dependencies group:

compile 'it.sephiroth.android.library.bottomnavigation:bottom-navigation:3.0.0'

Usage

Usage of the BottomNavigation widget is very easy. Just place it in your layout.xml like this:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout android:id="@+id/CoordinatorLayout01"
	xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
	android:layout_height="match_parent"
    android:fitsSystemWindows="true">

	...your content...

    <it.sephiroth.android.library.bottomnavigation.BottomNavigation
	    android:id="@+id/BottomNavigation"
        android:layout_width="match_parent"
	    android:layout_height="wrap_content"
        android:layout_gravity="bottom"
	    app:bbn_entries="@menu/bottombar_menu_4items"
        app:bbn_scrollEnabled="true"
        app:bbn_badgeProvider="@string/bbn_badgeProvider"
	    app:layout_behavior="@string/bbn_phone_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

All the menu main configurations are defined within the xml menu resource itself. Here's an example of a menu with 4 items:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@android:color/black"
    app:bbn_badgeColor="#FFFF0000"
	app:bbn_rippleColor="#33ffffff">
    <item
	    android:id="@+id/bbn_item1"
    	android:color="@color/colorPrimary"
        android:icon="@drawable/ic_cloud_off_white_24dp"
	    android:title="Cloud Sync" />
    <item
	    android:id="@+id/bbn_item2"
        android:color="@android:color/holo_green_dark"
	    android:icon="@drawable/ic_cast_connected_white_24dp"
        android:title="Chromecast" />
	<item
        android:id="@+id/bbn_item3"
	    android:color="@android:color/holo_orange_dark"
        android:icon="@drawable/ic_mail_white_24dp"
	    android:title="Mail" />
    <item
	    android:id="@+id/action4"
    	android:color="#FF5252"
        android:icon="@drawable/ic_format_list_numbered_white_24dp"
	    android:title="List" />
</menu>

Examples

4 shifting items menu 3 fixed items menu
Video 1 Video 2
4 items no background Tablet mode
4 items without changing background.
Menu show/hide feature is also disabled
Menu can be easily setup for (left or right) tablet support.
Video 3 Tablet Mode

Sizing

Dimensions and paddings follow the Google giudelines
Sizing

Tablets

The View supports tablet mode too (Left or Right). In order to enable tablet mode this is the configuration that should be used:

<it.sephiroth.android.library.bottomnavigation.BottomNavigation
    android:id="@+id/BottomNavigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="start"
    app:bbn_entries="@menu/bottombar_menu_3items"
    app:bbn_badgeProvider="@string/bbn_badgeProvider"
    app:layout_behavior="@string/bbn_tablet_view_behavior" />

Styling

The xml menu supports the following attributes in the <menu> tag:

<declare-styleable name="BottomNavigationMenu">
    <!-- menu default background color -->
    <attr name="android:background" />
    
    <!-- default badge color -->
    <attr name="bbn_badgeColor" format="color" />

    <!-- animation duration for the menu items -->
    <attr name="bbn_itemAnimationDuration" format="integer" />

    <!-- ripple selector color -->
    <attr name="bbn_rippleColor" format="color" />

    <!-- menu item active color -->
    <attr name="bbn_itemColorActive" format="color" />

    <!-- menu item inactive color -->
    <attr name="bbn_itemColorInactive" format="color" />

    <!-- menu item disabled color -->
    <attr name="bbn_itemColorDisabled" format="color" />

    <!-- force fixed behavior and always display item labels -->
    <!-- default implementation is false and the labels are -->
    <!-- shown only if there are less than 4 items in the menu -->
    <attr name="bbn_alwaysShowLabels" format="boolean" />
</declare-styleable>

Note: By default when there are 4 or 5 elements, only the selected item will display the label. In order to force all the items to always show their label, use bbn_alwaysShowLabels in the menu xml.

Badges

Badges

There's a basic support for badges using the default implementation. In order to display a badge in the current BottomNavigation view, all you have to do is:

    final BadgeProvider provider = bottomNavigationView.getBadgeProvider();
    provider.show(R.id.bbn_item3);

This code will show a little circle badge on the menu item with the id "bbn_item3".
You can define the default badge color inside the menu xml itself:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:bbn_badgeColor="#FFFF0000">
    
    <item
        android:id="@+id/bbn_item1"
        android:color="@color/colorPrimary"
        android:icon="@drawable/ic_cloud_off_white_24dp"
        android:title="Cloud Sync" />
        
    ...
</menu>

Then you can hide the badge using:

    bottomNavigation.getBadgeProvider().remove(R.id.bbn_item3);

Badges Customization

You can use your own Drawable by extending the BadgeProvider class. Once you've setup your new class you can tell the BottomNavigation view to use your class by specifying it in the "bbn_badgeProvider" attribute of your xml file.
For instance:

<it.sephiroth.android.library.bottomnavigation.BottomNavigation
    android:id="@id/BottomNavigation"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="bottom"
    app:bbn_badgeProvider="my.custom.BadgeProviderCustom"
    app:bbn_entries="@menu/bottombar_menu_4items"
    app:layout_behavior="@string/bbn_phone_view_behavior" />

This will make your my.custom.BadgeProviderCustom the default BadgeProvider.

License

The MIT License (MIT)

Copyright (c) 2016 Alessandro Crugnola

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Comments
  • Disable default selected tab

    Disable default selected tab

    Sometime selecting nothing is needed. using this way: mBottomNav.setDefaultSelectedIndex(-1); // Nothing tab is checked 👍 but, when I select one :( NullPointerException, because is invalid position ...

    java.lang.NullPointerException: Attempt to invoke virtual method 'void it.sephiroth.android.library.bottomnavigation.BottomNavigationFixedItemView.setExpanded(boolean, int, boolean)' on a null object reference at it.sephiroth.android.library.bottomnavigation.FixedLayout.setSelectedIndex(FixedLayout.java:106)

    Is there a way to have a tab not selected when first time running?

    enhancement 
    opened by QiiqeAzuara 4
  • Layout not scrolling, OnClickListeners not registering.

    Layout not scrolling, OnClickListeners not registering.

    Hi,

    I just started using your library, and for the most part it works perfectly, however I have found a weird issue. On one Fragment I have a RecyclerView and it works perfectly, scrolls down the list, and the toolbar and bottom navigation both hide and reappear when scrolling.

    I added another Fragment just now, and the layout is a simple RelativeLayout. When I move to that tab I do a .replace FragmentTransaction and it all works, however I cannot scroll in the layout, and all my OnClickListeners do not work. I can see the view has inflated, but I can't do anything with it.

    Does this library only work with RecyclerViews/Listviews or something? Not quite sure what's going on.

    Would appreciate any guidance on the matter. Thanks.

    opened by MiralDesai 4
  • Ability to avoid item getting selected?

    Ability to avoid item getting selected?

    Is it possible to do this or add such a feature? I could do it manually if the previousPosition was exposed with a method like getPrevousSelectedPosition(); or similar.

    opened by MiralDesai 3
  • Disable title for inactive items?

    Disable title for inactive items?

    Your first shifting example displays the title active only when the menu item is selected, I can't find how to implement this feature from the library though?

    Update: I might have found it? Need to test when I get to school.

    Could you possibly post a list of the xml attributes available? They do not show up at all for me in Android Studio through autocompletes and was lucky I found one attribute in the source code that isnt documented. Updated and expanded documentation would be greatly apprecieated, it is really limiting in terms of knowing what I can do with the ui xml and menu xml elements

    opened by dcalano 2
  • Menu with 4 icons dispayed in black color

    Menu with 4 icons dispayed in black color

    Your component is a lifesaver for me. I found the following behavior in my application. I use it in two different (MainActivity) AppCompatActivity, only one is shown during the user session since it depends on the user profile. I use a menu of three options in the first one and one more option in the second, four options total, all icons are white.

    But in the case of the second activity when this is displayed icons appear in black.

    I test the same layout deleting the fourth item from the menu and then the icons are displayed in white. This behavior is only when the fourth menu option is present.

    opened by gerardopenya 2
  • Conflict with Snackbar dismiss?

    Conflict with Snackbar dismiss?

    Hello,

    When using the BottomBehavior and showing a Snackbar, it generates a bug on dismissal gesture of Snackbar. But using the TabletBehavior, this doesn't happen.

    I'm using the sample app to reproduce the problem. Just click on FAB and try to dismiss the SnackBar.

    I'll try to investigate, but i have no clue about this problem yet.

    opened by wakim 2
  • custom badge doesn't work

    custom badge doesn't work

    The CustomBadgeProvider works in your demo application, but doesn't work in my app. It's really weird. What' more weird is you libary cause color #ffffff turns into color_primary in my app, that's really annonying.

    I just write a simple CustomBadgeProvider.java.

    public class CustomBadgeProvider extends BadgeProvider{
        public CustomBadgeProvider(BottomNavigation navigation) {
            super(navigation);
        }
    
    
        Drawable getBadge(@IdRes int itemId) {
            return new BadgeDrawable(Color.BLUE, 192);
        }
    }
    

    but the badge doesn't change as i write in getBadge method.

    opened by tlzxsun 2
  • bbn_itemColorInactive seems not working

    bbn_itemColorInactive seems not working

    Hi! Thanks for amazing library, but I have some issue. I've tried to change inactive item color but it appears to be not working!

    Here's my menu.xml `

    `

    And this is result: https://s9.postimg.org/bpv9pe35r/Screen+Shot+2016-04-14+at+12.10.42.png

    Please check it.

    opened by noiserr 2
  • how to add more then five item on bottom navigation

    how to add more then five item on bottom navigation

    when i add more then five item, then app are force closing with error "java.lang.IllegalArgumentException: BottomNavigation expects 3 to 5 items. 6 found". how to solve this?

    opened by bhumeshvr7github 1
  • Hardcoded text scale

    Hardcoded text scale

    private static final float TEXT_SCALE_ACTIVE = 1.1666666667f;
    

    Hi, i have some issues with this library, i can not make it look as i want it to be. I can override dimensions from library but i can not handle this one. Is it possible to implement static items which only change a color?

    opened by dron247 1
  • animation lag bug when specifying layout height.

    animation lag bug when specifying layout height.

    Foreword edit: I just ran a test while writing this issue. Changing the height to wrap_content fixes the issue but I will still post to bring it to attention for others who need more direct height controls

    Notice the bottom bar: http://imgur.com/i0bZMJZ

    There is a horizontal line slightly above the translucent nav bar. In this picture I was in the green colored index and animated over to the blue colored index. The ripple doesn't expand throughout the entire bar evenly, it just goes across horizontally and the rest changes behind it a bit later. Even with a solid nav bar there is still a 4-5px line lagging behind on the bottom of the nav bar.

    Using 2.0.1-rc1 Google Pixel, 7.1.1 if it matters

    <it.sephiroth.android.library.bottomnavigation.BottomNavigation android:id="@+id/view_main_nav" android:layout_width="match_parent" android:layout_height="56dp" android:layout_gravity="bottom" app:bbn_entries="@menu/nav_main" app:bbn_scrollEnabled="true" app:bbn_badgeProvider="@string/bbn_badgeProvider" app:layout_behavior="@string/bbn_default_view_behavior" />

    opened by dcalano 1
  • Can't Have Less Than 3 Items

    Can't Have Less Than 3 Items

    I cannot create less than three items. Is this intended behavior?

    $ adb logcat -b crash -d
    02-07 15:34:55.487 27586 27586 E AndroidRuntime: FATAL EXCEPTION: main
    02-07 15:34:55.487 27586 27586 E AndroidRuntime: Process: org.arianne.stendhal.client.debug, PID: 27586
    02-07 15:34:55.487 27586 27586 E AndroidRuntime: java.lang.IllegalArgumentException: BottomNavigation expects 3 to 5 items. 2 found
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at it.sephiroth.android.library.bottomnavigation.BottomNavigation.setItems(BottomNavigation.kt:532)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at it.sephiroth.android.library.bottomnavigation.BottomNavigation.onAttachedToWindow(BottomNavigation.kt:504)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.View.dispatchAttachedToWindow(View.java:14575)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2880)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2887)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2887)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2887)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2887)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2887)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2887)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2887)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1410)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1140)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6232)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.Choreographer.doCallbacks(Choreographer.java:670)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.Choreographer.doFrame(Choreographer.java:606)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:739)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:95)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:148)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5551)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
    02-07 15:34:55.487 27586 27586 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
    

    Edit: I guess it is.

    opened by AntumDeluge 0
  • how to invisible item

    how to invisible item

    use setMenuItemEnabled() function , can not be success use android:visible="false" is same <item android:id="@+id/connect" android:color="?colorPrimary" android:icon="@drawable/ic_network_connection" android:contentDescription="@string/connect" android:title="@string/connect"/>

    opened by XH888 0
  • Runtime error in minifyEnabled true

    Runtime error in minifyEnabled true

    When I export my bundle and run it in release mode It crashes and I get this error

    Caused by: android.view.InflateException: Binary XML file line #21 in com.apps.myapp/activity_main: Error inflating class it.sephiroth.android.library.bottomnavigation.BottomNavigation

    It occurs on runtime only in release mode and when minifyEnabled true

    full error:

    2020-02-11 22:15:19.238 782-782/com.mev.real E/AndroidRuntime: FATAL EXCEPTION: main Process: com.mev.real, PID: 782 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mev.real/com.mev.real.MainActivity}: android.view.InflateException: Binary XML file line #21 in com.mev.real:layout/activity_main: Binary XML file line #21 in com.mev.real:layout/activity_main: Error inflating class it.sephiroth.android.library.bottomnavigation.BottomNavigation at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3260) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3396) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2009) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7319) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934) Caused by: android.view.InflateException: Binary XML file line #21 in com.mev.real:layout/activity_main: Binary XML file line #21 in com.mev.real:layout/activity_main: Error inflating class it.sephiroth.android.library.bottomnavigation.BottomNavigation Caused by: android.view.InflateException: Binary XML file line #21 in com.mev.real:layout/activity_main: Error inflating class it.sephiroth.android.library.bottomnavigation.BottomNavigation Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:854) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1006) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:961) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1084) at android.view.LayoutInflater.inflate(LayoutInflater.java:682) at android.view.LayoutInflater.inflate(LayoutInflater.java:534) at android.view.LayoutInflater.inflate(LayoutInflater.java:481) at a.b.k.o.b(Unknown Source:23) at a.b.k.l.setContentView(Unknown Source:4) at com.mev.real.MainActivity.onCreate(Unknown Source:33) at android.app.Activity.performCreate(Activity.java:7783) at android.app.Activity.performCreate(Activity.java:7772) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3235) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3396) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2009) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7319) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934) Caused by: java.lang.RuntimeException: Could not inflate Behavior subclass it.sephiroth.android.library.bottomnavigation.BadgeProvider 2020-02-11 22:15:19.239 782-782/com.mev.real E/AndroidRuntime: at it.sephiroth.android.library.bottomnavigation.BottomNavigation$a.a(:17) at it.sephiroth.android.library.bottomnavigation.BottomNavigation.a(Unknown Source:38) at it.sephiroth.android.library.bottomnavigation.BottomNavigation.(Unknown Source:26) ... 28 more Caused by: java.lang.ClassNotFoundException: it.sephiroth.android.library.bottomnavigation.BadgeProvider at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:454) at it.sephiroth.android.library.bottomnavigation.BottomNavigation$a.a(:15) ... 30 more Caused by: java.lang.ClassNotFoundException: it.sephiroth.android.library.bottomnavigation.BadgeProvider ... 33 more

    opened by sabrimev 0
  • OnclickmenuItem not working

    OnclickmenuItem not working

    When I click a menu item the fragment doesn't shift, it remains the same as before.. the swipe feature is working fine (in viewpager). How do I solve this

    opened by ishudohare 1
Releases(version-3.0.0)
Owner
Alessandro Crugnola
Alessandro Crugnola
Spotify like android material bottom navigation bar library.

SuperBottomBar About Spotify like android material bottom navigation bar library. GIF Design Credits All design and inspiration credits belongs to Spo

Ertugrul 73 Dec 10, 2022
A menu consisting of icons (ImageViews) and metaball bouncing selection to give a blob effect. Inspired by Material design

Metaball-Menu A menu consisting of icons (ImageViews) and metaball bouncing selection to give a blob effect. Inspired by Material design ScreenShot Us

AbYsMeL 198 Sep 15, 2022
Floating Action Menu for Android. Inspired by the Google Plus floating menu

android-floating-action-menu Floating Action Menu for Android. Inspired by the Google Plus floating menu. Demo Setup The simplest way to use this libr

Alessandro Crugnola 242 Nov 10, 2022
Android library that provides the floating action button to sheet transition from Google's Material Design.

MaterialSheetFab Library that implements the floating action button to sheet transition from Google's Material Design documentation. It can be used wi

Gordon Wong 1.6k Dec 13, 2022
Space Navigation is a library allowing easily integrate fully customizable Google Spaces like navigation to your app.

Space-Navigation-View Introduction Space Navigation is a library allowing easily integrate fully customizable Google [Spaces][1] like navigation to yo

Arman 2k Dec 23, 2022
Simple and easy to use circular menu widget for Android.

Deprecated This project is no longer maintained. No new issues or pull requests will be accepted. You can still use the source or fork the project to

Anup Cowkur 420 Nov 25, 2022
🚀 A very customizable library that allows you to present menu items (from menu resource and/or other sources) to users as a bottom sheet.

SlidingUpMenu A library that allows you to present menu items (from menu resource and/or other sources) to users as a bottom sheet. Gradle Dependency

Rasheed Sulayman 26 Jul 17, 2022
You can create awesome menus with bottom sheet experience in a few lines

You can create awesome menus with bottom sheet experience in a few lines

Mazen Rashed 19 Nov 1, 2022
Spinner with bottom sheet dialog for Android

This is a small library for spinner view with displaying options in bottom sheet dialog. This view doesn't improve or extend the default android Spinner. The library doesn't support any other types of showing menu, only bottom sheet dialog.

Oleg Nestyuk 23 Oct 19, 2022
Suhuf is an android library that is used to build bottom sheets in an elegant way.

Suhuf is an android library that is used to build bottom sheets in an elegant way.

Rahmat Rasyidi Hakim 10 Nov 15, 2021
Bottom Sheet fragment with a sticky header and a content recycler view

Sticky Header Bottom Sheet A simple library to create a Bottom Sheet with a sticky header and a content recycler view. The bottom sheet expands on scr

Kshitij Kumar 12 Sep 21, 2022
Android PopupMenu and iOS14+ UIMenu components for react-native.

Android PopupMenu and iOS14+ UIMenu components for react-native. Falls back to ActionSheet for versions below iOS14.

null 568 Jan 1, 2023
Navigation menu for Android (based off Google+ app)

RibbonMenu Navigation menu for Android (based on Google+ app). Usage Menus are created in xml as normal, adding text and an icon. In the layout you wa

David Scott 487 Nov 24, 2022
Implementation of "Side Navigation" or "Fly-in app menu" pattern for Android (based on Google+ app)

Android SideNavigation Library Implementation of "Side Navigation" or "Fly-in app menu" pattern for Android (based on Google+ app). Description The Go

Evgeny Shishkin 319 Nov 25, 2022
:fire: The powerful and easiest way to implement modern material popup menu.

PowerMenu ?? The powerful and easiest way to implement modern material popup menu. PowerMenu can be fully customized and used for popup dialogs. Downl

Jaewoong Eum 1k Dec 29, 2022
A new way to implement navigation in your app 🏎

ExpandableBottomBar A new way to improve navigation in your app Its really easy integrate to your project take it, faster, faster Important: library w

Alexander Dadukin 692 Dec 29, 2022
A customizable and easy to use BottomBar navigation view with sleek animations, with support for ViewPager, ViewPager2, NavController, and badges.

AnimatedBottomBar A customizable and easy to use bottom bar view with sleek animations. Examples Playground app Download the playground app from Googl

Joery 1.2k Dec 30, 2022
Android - Blur Navigation Drawer like Etsy app.

Blur Navigation Drawer Library[DEPRECATED] Blur Navigation Drawer like Etsy app. Demo You can download a demo here. Updates Version 1.1 Add support fo

Vasilis Charalampakis 414 Nov 23, 2022