The flexible, easy to use, all in one drawer library for your Android project. Now brand new with material 2 design.

Overview

MaterialDrawer

... the flexible, easy to use, all in one drawer library for your Android project.


What's included 🚀 Setup 🛠️ Migration Guide 🧬 WIKI / FAQ 📖 Used bySample App


What's included 🚀

  • the easiest possible integration
  • uses the androidX support libraries
  • compatible down to API Level 16
  • includes an AccountSwitcher
  • quick and simple api
  • follows the NEW Google Material Design Guidelines
  • use vector (.svg) icons and icon fonts via the Android-Iconics integration
  • Google Material Design Icons, Google Material Community Design Icons, FontAwesome and more
  • comes with various themes which help to get your own themes clean
  • modify the colors on the go
  • comes with multiple default drawer items
  • based on a RecyclerView
  • RTL support
  • Gmail like MiniDrawer
  • expandable items
  • badge support
  • define custom drawer items
  • tested and stable
  • sticky footer or headers
  • absolutely NO limits
  • NavController support by @petretiandrea

If you upgrade from < 8.0.0 follow the MIGRATION GUIDE

Preview

Screenshots 🎉

Image

Setup

Latest releases 🛠

  • Kotlin && New | v8.3.3
  • Kotlin | v7.0.0 | (Builder approach like v6.x)
  • Java && AndroidX | v6.1.2
  • Java && AppCompat | v6.0.9

1. Provide the gradle dependency

implementation "com.mikepenz:materialdrawer:${lastestMaterialDrawerRelease}"

//required support lib modules
implementation "androidx.appcompat:appcompat:${versions.appcompat}"
implementation "androidx.recyclerview:recyclerview:${versions.recyclerView}"
implementation "androidx.annotation:annotation:${versions.annotation}"
implementation "com.google.android.material:material:${versions.material}"
implementation "androidx.constraintlayout:constraintlayout:${versions.constraintLayout}"

// Add for NavController support
implementation "com.mikepenz:materialdrawer-nav:${lastestMaterialDrawerRelease}"

// Add for Android-Iconics support
implementation "com.mikepenz:materialdrawer-iconics:${lastestMaterialDrawerRelease}"

You can find dependency versions and all library releases on MVN Repository.

2. Add the Drawer into the XML

The MaterialDrawerSliderView has to be provided as child of the DrawerLayout and will as such act as the slider

<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    ... your content ...

    <com.mikepenz.materialdrawer.widget.MaterialDrawerSliderView
        android:id="@+id/slider"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true" />
</androidx.drawerlayout.widget.DrawerLayout>

3. Add the DrawerStyle to your theme

<style name="SampleApp.DayNight" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    ...
    <item name="materialDrawerStyle">@style/Widget.MaterialDrawerStyle</item>
    <item name="materialDrawerHeaderStyle">@style/Widget.MaterialDrawerHeaderStyle</item>
    ...
</style>

Great. Your drawer is now ready to use.

Additional Setup

Add items and adding some functionality

//if you want to update the items at a later time it is recommended to keep it in a variable
val item1 = PrimaryDrawerItem().apply { nameRes = R.string.drawer_item_home; identifier = 1 }
val item2 = SecondaryDrawerItem().apply { nameRes = R.string.drawer_item_settings; identifier = 2 }

// get the reference to the slider and add the items
slider.itemAdapter.add(
	    item1,
	    DividerDrawerItem(),
	    item2,
	    SecondaryDrawerItem().apply { nameRes = R.string.drawer_item_settings }
)

// specify a click listener
slider.onDrawerItemClickListener = { v, drawerItem, position ->
    // do something with the clicked item :D
    false
}

Selecting an item

//set the selection to the item with the identifier 1
slider.setSelection(1)
//set the selection to the item with the identifier 2
slider.setSelection(item2)
//set the selection and also fire the `onItemClick`-listener
slider.setSelection(1, true)

By default, when a drawer item is clicked, it becomes the new selected item. If this isn't the expected behavior, you can disable it for this item using isSelectable = false:

SecondaryDrawerItem().apply { nameRes = R.string.drawer_item_dialog; isSelectable = false }

Modify items or the drawer

//modify an item of the drawer
item1.apply {
  nameText = "A new name for this drawerItem"; badge = StringHolder("19")
  badgeStyle = BadgeStyle().apply { textColor = ColorHolder.fromColor(Color.WHITE); color = ColorHolder.fromColorRes(R.color.md_red_700) }
}
//notify the drawer about the updated element. it will take care about everything else
slider.updateItem(item1)

//to update only the name, badge, icon you can also use one of the quick methods
slider.updateName(1, "A new name")

//the result object also allows you to add new items, remove items, add footer, sticky footer, ..
slider.addItem(DividerDrawerItem())
slider.addStickyFooterItem(PrimaryDrawerItem().apply { nameTest = "StickyFooter" })

//remove items with an identifier
slider.removeItem(2)

//open / close the drawer
slider.drawerLayout?.openDrawer(slider)
slider.drawerLayout?.closeDrawer(slider)

//get the reference to the `DrawerLayout` itself
slider.drawerLayout

Add profiles and an AccountHeader

// Create the AccountHeader
headerView = AccountHeaderView(this).apply {
    attachToSliderView(slider) // attach to the slider
    addProfiles(
        ProfileDrawerItem().apply { nameText = "Mike Penz"; descriptionText = "[email protected]"; iconRes = R.drawable.profile; identifier = 102 }
    )
    onAccountHeaderListener = { view, profile, current ->
        // react to profile changes
        false
    }
    withSavedInstance(savedInstanceState)
}

Android-Iconics support

The MaterialDrawer provides an extension for the Android-Iconics library. This allows you to create your DrawerItems with an icon from any font.

Choose the fonts you need. Available Fonts

// Add for Android-Iconics support
implementation "com.mikepenz:materialdrawer-iconics:${lastestMaterialDrawerRelease}"

// fonts
implementation 'com.mikepenz:google-material-typeface:x.y.z@aar' //Google Material Icons
implementation 'com.mikepenz:fontawesome-typeface:x.y.z@aar'     //FontAwesome
//now you can simply use any icon of the Google Material Icons font
PrimaryDrawerItem().apply { iconicsIcon = GoogleMaterial.Icon.gmd_wb_sunny }
//Or an icon from FontAwesome
SecondaryDrawerItem().apply { iconicsIcon = FontAwesome.Icon.faw_github }

Advanced Setup

For advanced usecases. Please have a look at the provided sample activities.

Load images via url

The MaterialDrawer supports fetching images from URLs and setting them for the Profile icons. As the MaterialDrawer does not contain an ImageLoading library the dev can choose his own implementation (Picasso, Glide, ...). This has to be done, before the first image should be loaded via URL. (Should be done in the Application, but any other spot before loading the first image is working too)

//initialize and create the image loader logic
DrawerImageLoader.init(object : AbstractDrawerImageLoader() {
    override fun set(imageView: ImageView, uri: Uri, placeholder: Drawable) {
        Picasso.get().load(uri).placeholder(placeholder).into(imageView)
    }

    override fun cancel(imageView: ImageView) {
        Picasso.get().cancelRequest(imageView)
    }
    
    /*
    override fun set(imageView: ImageView, uri: Uri, placeholder: Drawable, tag: String?) {
        super.set(imageView, uri, placeholder, tag)
    }

    override fun placeholder(ctx: Context): Drawable {
        return super.placeholder(ctx)
    }

    override fun placeholder(ctx: Context, tag: String?): Drawable {
        return super.placeholder(ctx, tag)
    }
    */
})

An implementation with GLIDE v4 (See tag v6.1.1 for glide v3 sample) can be found in the sample application

JVM Target 1.8

// Since 8.1.0 the drawer includes core ktx 1.3.0 which requires jvm 1.8
kotlinOptions {
    jvmTarget = "1.8"
}

Style the drawer 🖌️

Custom style - styles.xml

Create your custom style. If you don't need a custom theme see the next section, how you can set the colors just by overwriting the original colors.

// define a custom drawer style
<style name="Widget.MaterialDrawerStyleCustom" parent="Widget.MaterialDrawerStyle">
    <item name="materialDrawerInsetForeground">#4000</item>
    <!-- MaterialDrawer specific values -->
    <item name="materialDrawerBackground">?colorSurface</item>
    <item name="materialDrawerPrimaryText">?android:textColorPrimary</item>
    <item name="materialDrawerPrimaryIcon">?android:textColorSecondary</item>
    <item name="materialDrawerSecondaryText">?android:textColorSecondary</item>
    <item name="materialDrawerSecondaryIcon">?android:textColorSecondary</item>
    <item name="materialDrawerDividerColor">?android:textColorHint</item>
    <item name="materialDrawerSelectedBackgroundColor">?colorPrimary</item>
</style>

// define a custom header style
<style name="Widget.MaterialDrawerHeaderStyleCustom" parent="">
    <item name="materialDrawerCompactStyle">true</item>
    <item name="materialDrawerHeaderSelectionText">?colorOnSurface</item>
    <item name="materialDrawerHeaderSelectionSubtext">?colorOnSurface</item>
</style>

// define the custom styles for the theme
<style name="SampleApp" parent="Theme.MaterialComponents.Light.NoActionBar">
    ...
    <item name="materialDrawerStyle">@style/Widget.MaterialDrawerStyleCustom</item>
    <item name="materialDrawerHeaderStyle">@style/Widget.MaterialDrawerHeaderStyleCustom</item>
    ...
</style>

Adjust BezelImageView style

Overwrite the Style of the BezelImageView for the whole MaterialDrawer

<style name="BezelImageView">
    <item name="biv_maskDrawable">@drawable/material_drawer_rectangle_mask</item>
    <item name="biv_drawCircularShadow">false</item>
    <item name="biv_selectorOnPress">@color/material_drawer_primary</item>
    <item name="android:scaleType">centerInside</item>
</style>

Used by

(feel free to send me new projects)

Articles about the MaterialDrawer

Credits

Developed By

License

Copyright 2021 Mike Penz

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • MaterialDrawer v4.x.x TESTING

    MaterialDrawer v4.x.x TESTING

    Hello @ everybody

    I spent many, many, many hours on refactoring and simplifying the drawer, and i think v4.0.0 is now ready for test. As it has huge under the hood changes, i do not want to release it as normal release. First i want to make sure everything is working as expected, and nothing is missing.

    compile('com.mikepenz:materialdrawer:4.0.0.rc10-SNAPSHOT@aar') {
        transitive = true
    }
    

    Things to note:

    • v4.0.0 was completely refactored, and got a lot of fundamental changes
      • the API may differ from the previous version
      • packages were renamed
      • classes were moved
      • methods were renamed / removed / moved
      • main functions were redefined or changed

    Changes:

    • now uses a RecyclerView
    • IDrawerItem interface changed to reflect change to RecyclerView
    • the Header & Footer is now a new DrawerItemType (API to previous version still exists and works)
    • StickyHeader & StickyFooter stay the same
    • New MiniDrawer class which creates a mini version of the drawer as view
    • setters were removed, only with* methods kept
    • withCheckable() was finally renamed to withSelectable()
    • Cleanups / Code moved / Packages moved / Classes moved / Functionality moved
    • Holder object for String, Image, Color (used in the DrawerItems)
    • Getting started from PRE v4.0.0
      • reimport not found packages
      • there are no more setter methods, to simplify the maintenance i only kept the withXYZ (builder-setters)
      • withCheckable() was finally renamed to withSelectable()
      • the OnDrawerItemClickListener has no more parent or id parameters
      • probably more, let me know in this ticket
    • v4.0.0 is new. it's different. it changes a lot. So:
      • it is still possible to redefine some functions or apis
      • rename methods to make them easier to understand
      • overthink some apis
      • move stuff / remove stuff / add stuff
    • BUG REPORTS are fine
    • IDEAS are welcome
    • THOUGHTS should be just posted here. perhaps we have to change somehting
    • PULL REQUESTS are welcome (let's just discuss the change first)
    • REDEFINE requests are also ok

    Thanks for all the help.

    You can try the sample app without coding here: http://weew.ee/k781A

    The latest source code including an (minimal) updated README can be found here: https://github.com/mikepenz/MaterialDrawer/tree/feature/refactoring

    enhancement help wanted 
    opened by mikepenz 140
  • (AccountSwitcher) Circle Image and details

    (AccountSwitcher) Circle Image and details

    Hey, first of this is an excellent start. Would love to be able to include this in the layout xml.

    Suggestion: If you see the image in the url, there is a big circle profile picture along with Name and E-mail. It would be amazing to provide a layout a template for that. I could work on it if you accept pull requests.

    http://material-design.storage.googleapis.com/publish/v_2/material_ext_publish/0Bx4BSt6jniD7c2dhcFRZdzBPWnM/patterns_navdrawer_elevation1.png

    enhancement 
    opened by gaara87 61
  • Error:Failed to resolve: Android-Iconics:iconics-core:unspecified

    Error:Failed to resolve: Android-Iconics:iconics-core:unspecified

    Since I reconfigured my code to use v4.0.0, Android Studio does not compile! Anything I try fails with that message:

    Error:Failed to resolve: Android-Iconics:iconics-core:unspecified
    

    Even when I try to clean the project I get:

    Error:A problem occurred configuring project ':app'.
    > Could not resolve all dependencies for configuration ':app:_debugCompile'.
       > Could not find Android-Iconics:iconics-core:unspecified.
         Searched in the following locations:
             https://jcenter.bintray.com/Android-Iconics/iconics-core/unspecified/iconics-core-unspecified.pom
             https://jcenter.bintray.com/Android-Iconics/iconics-core/unspecified/iconics-core-unspecified.jar
             file:/home/dan/DevAndroid/sdk/extras/android/m2repository/Android-Iconics/iconics-core/unspecified/iconics-core-unspecified.pom
             file:/home/dan/DevAndroid/sdk/extras/android/m2repository/Android-Iconics/iconics-core/unspecified/iconics-core-unspecified.jar
             file:/home/dan/DevAndroid/sdk/extras/google/m2repository/Android-Iconics/iconics-core/unspecified/iconics-core-unspecified.pom
             file:/home/dan/DevAndroid/sdk/extras/google/m2repository/Android-Iconics/iconics-core/unspecified/iconics-core-unspecified.jar
         Required by:
             CollecteRecouris:app:unspecified > com.mikepenz:fontawesome-typeface:4.4.0.1
    

    This never happened before when using v3. But, I already updated all my code to use v4, today! This is what's included in app's build.gradle:

      compile 'com.mikepenz:materialdrawer:4.0.0'
      compile 'com.mikepenz:iconics-core:1.7.3'
      compile 'com.mikepenz:fontawesome-typeface:4.4.0.1'
    
    question 
    opened by bzkdjc 45
  • Set header withIcon just working one image using Glide library??

    Set header withIcon just working one image using Glide library??

    Please explain to me about this. I have 2 avatars, but only one working with Gilde library. I follow this code (https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/CustomApplication.java#L26 But my application like this: http://www.mediafire.com/view/7ffhw4h1c40e4mx/Capture.PNG . Please check image in the link.

    question 
    opened by trinhvanminh2009 41
  • Set selection on SecondaryDrawerItem and fire onClick

    Set selection on SecondaryDrawerItem and fire onClick

    Hello, first of all thank you so much for this library. It's really well done and useful. My problem is that I cannot set the selection on an item, which is a "SecondaryDrawerItem". I am using the following code. result.setSelection(152, true); So my aim is to select, open and fire the click event to this drawer item, but it crashes instantly. An answer would be greatly appreciated, thanks.

    enhancement 
    opened by FelixMittermeier 33
  • Drawer is shown fully transparent when using with Crosswalk WebView

    Drawer is shown fully transparent when using with Crosswalk WebView

    Hello! I have a strange problem with MaterialDrawer. I use Crosswalk Webview together with MaterialDrawer in my activity:

    import ...;
    import com.mikepenz.materialdrawer.Drawer;
    import com.mikepenz.materialdrawer.DrawerBuilder;
    import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
    import com.mikepenz.materialdrawer.model.SectionDrawerItem;
    import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
    
    import org.xwalk.core.JavascriptInterface;
    import org.xwalk.core.XWalkActivity;
    import org.xwalk.core.XWalkResourceClient;
    import org.xwalk.core.XWalkView;
    
    public class MainActivity extends XWalkActivity {
    
        private XWalkView webView;
        private Drawer drawer;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            webView = (XWalkView) findViewById(R.id.xwvMain);
            webView.setResourceClient(new MyResourceClient(webView,
                    getPackageManager()));
            drawer = new DrawerBuilder()
                    .withActivity(this)
                    .withSystemUIHidden(true)
                    .withOnDrawerListener(new DrawerListener())
                    .withOnDrawerItemClickListener(
                            new DrawerItemClickListener(this))
                    .withSelectedItem(0)
                    .addDrawerItems(
                            new PrimaryDrawerItem()
                                    .withName(R.string.action_main_screen)
                                    .withIcon(R.drawable.ic_fullscreen_black_24dp)
                                    .withIdentifier(0),
                            new PrimaryDrawerItem()
                                    .withName(R.string.action_technical_info_screen)
                                    .withIcon(R.drawable.ic_info_black_24dp)
                                    .withIdentifier(1),
                            new PrimaryDrawerItem()
                                    .withName(R.string.action_settings)
                                    .withIcon(R.drawable.ic_settings_black_24dp)
                                    .withIdentifier(2),
                            new SectionDrawerItem()
                                    .withName(R.string.action_actions),
                            new PrimaryDrawerItem()
                                    .withName(R.string.action_restart_service)
                                    .withIcon(R.drawable.ic_refresh_black_24dp)
                                    .withIdentifier(3),
                            new PrimaryDrawerItem()
                                    .withName(R.string.action_shutdown_service)
                                    .withIcon(R.drawable.ic_close_black_24dp)
                                    .withIdentifier(4),
                            new PrimaryDrawerItem()
                                    .withName(R.string.action_restart_adapter)
                                    .withIcon(R.drawable.ic_memory_black_24dp)
                                    .withIdentifier(5)).build();
    
            drawer.addStickyFooterItem(new PrimaryDrawerItem()
                    .withName(R.string.footer_go_to_website)
                    .withIcon(R.drawable.ic_link_black_24dp).withIdentifier(10));
            drawer.addStickyFooterItem(new PrimaryDrawerItem()
                    .withName(R.string.footer_translate)
                    .withIcon(R.drawable.ic_translate_black_24dp)
                    .withIdentifier(11));
    
            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                drawer.getDrawerLayout().setFitsSystemWindows(false);
            }
        }
    
        ...
    }
    

    On Android 4 it works ok, but on Android 5 and 6 the drawer is not visible when I slide from the left. But I know that all drawer items work because when I click on the area where the drawer should be, the corresponding item click event is fired. And moreover, after I click on this invisible drawer for the first time, it becomes visible until I quit the activity. When I open the activity again, it becomes invisible until first click on it again. Please watch this video for the demonstation: https://www.youtube.com/watch?v=OOIdYsbRz0A

    The bug is somehow connected with Crosswalk, because on my second activity, which doesn't use webview, the drawer works ok.

    Any help will be appreciated, and if some more info is needed, I'm ready to provide it.

    question 
    opened by roher-roher 33
  • documentation

    documentation

    this is not a criticism, it is an offer of help.

    i look at every issue that is raised. about 80-90% of them could be resolved with some (dare i say it) better documentation. this is a very good piece of software, but i do think it is let down by the documentation.

    for me, the best way to tackle something like this is to agree on the table of contents. with that in place, the structure could be implemented in the wiki, with a placeholder in each section saying what the section should contain. then people who want to contribute can place content in these sections. furthermore, questions and answers that have already been provided can be used as a starting point.

    now writing documentation is probably my least favourite thing to do. but i am willing to help.

    enhancement help wanted 
    opened by simonckenyon 33
  • Status bar background drawn below status bar

    Status bar background drawn below status bar

    Hi,

    Before I begin, I just want to thank you for providing this great library! I have a situation where the status bar background is drawn below the status bar, as shown in the screenshot. It happens when my app returns to portrait orientation after displaying a fullscreen YouTube player view in landscape. I have the android:configChanges option set for my activity in the manifest to prevent my activity from being destroyed and recreated so that the YouTube video will not have to rebuffer. I tested this on 3 devices, and it only happens on Android 4.1.2. The problem doesn't occur on Android 4.4.4 and 5.1.1. I believe the issue is due to the assumption that the status bar doesn't get hidden during fullscreen on pre-sdk 19 devices, or something along those lines. Please help! Thank you!

    screenshot_2015-06-10-12-03-10

    question 
    opened by filbertteo 29
  • How to hide and show account header

    How to hide and show account header

    How can I hide the account header? I've created the code below but I don't want the account header to be showing during runtime. The solution is 'headerResult.?' where the question mark is replaced by something but I don't know what.

        headerResult = new AccountHeaderBuilder()
                .withActivity(getActivity())
                .withHeaderBackground(R.color.red)
    
                .addProfiles(
                        new ProfileDrawerItem().withName("Mike Penz").withEmail("[email protected]")
                )
                .build();
    
        result = new DrawerBuilder()
                .withActivity(getActivity())
                .withAccountHeader(headerResult)
                .withTranslucentStatusBar(false)
                .withActionBarDrawerToggle(false)
                .withSelectedItem(-1)
                .addDrawerItems(
                        new PrimaryDrawerItem().withName(R.string.greeting).withIdentifier(1).withCheckable(false)
                )
                .build();
    
    question 
    opened by macaronlover 28
  • Is it possible to use the same Drawer object in different activities?

    Is it possible to use the same Drawer object in different activities?

    Hello,

    I'm getting an error if I attempt to hold the Drawer object and display it more than once. Is it possible, for performance considerations, to create exactly one (static) Drawer and use it in other activities? I realize the best-practice would be doing one activity with fragments, but this is not the case.

    Thanks A Costi

    question 
    opened by acosti 27
  • Test MaterialDrawer v5.0.0 with FastAdapter, fitsSystemWindows

    Test MaterialDrawer v5.0.0 with FastAdapter, fitsSystemWindows

    v5.0.0 of the MaterialDrawer will internally switch to the FastAdapter which provides a highly flexible and performant Adapter implementation which allows a flexible setting of new Item's as the MaterialDrawer did it in the past.

    This is a huge step as it will bring new features in the future.

    Changes for this are currently on the FastAdapter branch (https://github.com/mikepenz/MaterialDrawer/tree/feature/FastAdapter)

    Via this dependency:

    compile('com.mikepenz:materialdrawer:5.0.0.b27-SNAPSHOT@aar') {
        transitive = true
    }
    

    As this is just a SNAPSHOT at the moment it is only available on the SNAPSHOTS repo of maven central. You can add it like done here: https://github.com/mikepenz/MaterialDrawer/blob/feature/FastAdapter/build.gradle#L17

    Please test and report back

    help wanted question 
    opened by mikepenz 27
Releases(v9.0.1)
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
Jetpack Compose BottomDrawerScaffold (Material Bottom Drawer)

BottomDrawerScaffold Current Compose Version: 1.0.2 Compose BottomDrawerScaffold which implements the Material Bottom Drawer https://material.io/compo

Alexander Karkossa 8 Dec 28, 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
Navigation Drawer Bottom Navigation View

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

Kaique Ocanha 6 Jun 15, 2022
CustomNavigationDrawer - Custom Navigation Drawer with compose

An easy sample to explore navigation component and navigation drawer from Jetpac

rafael altamirano 0 Jan 4, 2022
A sleek, out of the box, easy to understand and use, swipe gesture based Navigational Library for android.

Facilis Swipe gesture based navigational library for Android. Watch Demo Video: Getting Started To get this project into your build: Gradle Add it in

Prem Suman 35 Feb 15, 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
A customizable and easy to use BottomBar navigation view with sleek animations, with support for ViewPager, ViewPager2, NavController, and badges.

A customizable and easy to use BottomBar navigation view with sleek animations, with support for ViewPager, ViewPager2, NavController, and badges.

Joery Droppers 1000 Dec 5, 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 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 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
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
Android Library for making animated tutorials inside your app

##SlidingTutorial Cleveroad introduces Sliding Tutorial Library for Android Hey guys, hope you haven’t started developing a tutorial for your Android

Cleveroad 2.5k Dec 31, 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
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
Android Navigation Fragment Share Element Example: Use Share Element Transition with recyclerView Item and ViewPager2 Item.

Android-Navigation-Fragment-Share-Element-Example 说明 Android 使用Navigation导航切换Fragment中使用共享元素过渡动画的例子:将在listFragment的RecyclerView的Item共享元素过渡到pagerFragme

null 3 Sep 28, 2022
Use Fragment like Activity

Fragivity : Use Fragment like Activity English | 中文文档 Fragivity is a library used to build APP with "Single Activity + Multi-Fragments" Architecture R

fundroid 278 Nov 22, 2022
NavigationAndFragments - A use case for fragments and navigation

NavigationAndFragments A use case for fragments and navigation. To implement this use case, follow these steps : Create a new fragment navigation xml

Google Developers 3 Sep 15, 2022
Dismiss your keyboard by tapping anywhere outside it.

Keyboard Dismisser What is this? Keyboard Dismisser is a simple library that allows you to dismiss keyboard by tapping anywhere outside it. Currently

Gabriel Samojło 49 Nov 28, 2021