[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7173":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":39,"readmeContent":40,"aiSummary":41,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":42,"discoverSource":43},7173,"MaterialDrawer","mikepenz\u002FMaterialDrawer","mikepenz","The flexible, easy to use, all in one drawer library for your Android project. Now brand new with material 2 design.","https:\u002F\u002Fmikepenz.dev",null,"Kotlin",11644,2017,322,9,0,2,3,44.91,"Apache License 2.0",false,"develop",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,7,38],"android","android-development","android-library","android-ui","drawer","drawer-support","drawerlayout","hacktoberfest","java","material-components","material-design","material-theme","material-ui","materialdrawer","navigation-drawer","2026-06-12 02:01:35","# MaterialDrawer\n\n... the flexible, easy to use, all in one drawer library for your Android project.\n\n-------\n\n\u003Cp align=\"center\">\n    \u003Ca href=\"#whats-included-\">What's included 🚀\u003C\u002Fa> &bull;\n    \u003Ca href=\"#setup\">Setup 🛠️\u003C\u002Fa> &bull;\n    \u003Ca href=\"MIGRATION.md\">Migration Guide 🧬\u003C\u002Fa> &bull;\n    \u003Ca href=\"FAQ.md\">WIKI \u002F FAQ 📖\u003C\u002Fa> &bull;\n    \u003Ca href=\"#used-by\">Used by\u003C\u002Fa> &bull;\n    \u003Ca href=\"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.mikepenz.materialdrawer.app\">Sample App\u003C\u002Fa>\n\u003C\u002Fp>\n\n-------\n\n### What's included 🚀\n- **the easiest possible integration**\n- **uses the androidX support libraries**\n- compatible down to **API Level 16**\n- includes an **AccountSwitcher**\n- quick and simple api\n- follows the **NEW Google Material Design Guidelines**\n- use **vector** (.svg) icons and **icon fonts** via the [Android-Iconics](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FAndroid-Iconics) integration\n - **Google Material Design Icons**, Google **Material Community** Design Icons, FontAwesome and more\n- comes with various **themes** which help to get your own themes clean\n- modify the colors on the go\n- comes with multiple default drawer items\n- based on a **RecyclerView**\n- **RTL** support\n- Gmail like **MiniDrawer**\n- expandable items\n- **badge** support\n- define custom drawer items\n- tested and **stable**\n- sticky footer or headers\n- **absolutely NO limits**\n- NavController support by @petretiandrea\n\n> If you upgrade from \u003C 8.0.0 follow the [MIGRATION GUIDE](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FMaterialDrawer\u002Fblob\u002Fdevelop\u002FMIGRATION.md)\n\n# Preview\n\n## Screenshots 🎉\n![Image](DEV\u002Fgithub\u002Fscreenshots_combined.jpg)\n\n# Setup\n\n## Latest releases 🛠\n\n- Kotlin && M3 && JVM\n  17 | [v10.0.0-b01](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FMaterialDrawer\u002Ftree\u002Fv10.0.0-b01)\n- Kotlin && Material 3 | [v9.0.2](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FMaterialDrawer\u002Ftree\u002Fv9.0.2)\n- Kotlin | [v8.4.5](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FMaterialDrawer\u002Ftree\u002Fv8.4.5) (Provided as-is only)\n- Java && AndroidX | [v6.1.2](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FMaterialDrawer\u002Ftree\u002Fv6.1.2) (Provided as-is only)\n- Java && AppCompat | [v6.0.9](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FMaterialDrawer\u002Ftree\u002Fv6.0.9) (Provided as-is only)\n\n### 1. Provide the gradle dependency\n\nThe latest release is available\non [Maven Central](https:\u002F\u002Fsearch.maven.org\u002Fartifact\u002Fcom.mikepenz\u002Fmaterialdrawer\u002F9.0.1\u002Faar).\n\n```gradle\nimplementation(\"com.mikepenz:materialdrawer:${latestRelease}\")\n```\n\n```gradle\n\u002F\u002Frequired support lib modules\nimplementation \"androidx.appcompat:appcompat:${versions.appcompat}\"\nimplementation \"androidx.recyclerview:recyclerview:${versions.recyclerView}\"\nimplementation \"androidx.annotation:annotation:${versions.annotation}\"\nimplementation \"com.google.android.material:material:1.5.0-alpha05\" \u002F\u002F requires at least 1.5.0-x\nimplementation \"androidx.constraintlayout:constraintlayout:${versions.constraintLayout}\"\n```\n\n[NavController Support @ Maven Central](https:\u002F\u002Fsearch.maven.org\u002Fartifact\u002Fcom.mikepenz\u002Fmaterialdrawer-nav\u002F9.0.1\u002Faar).\n\n```gradle\n\u002F\u002F Add for NavController support\nimplementation \"com.mikepenz:materialdrawer-nav:${lastestMaterialDrawerRelease}\"\n```\n\n[Android-Iconics Support @ Maven Central](https:\u002F\u002Fsearch.maven.org\u002Fartifact\u002Fcom.mikepenz\u002Fmaterialdrawer-iconics\u002F9.0.1\u002Faar)\n.\n\n```gradle\n\u002F\u002F Add for Android-Iconics support\nimplementation \"com.mikepenz:materialdrawer-iconics:${lastestMaterialDrawerRelease}\"\n```\n\n### 2. Add the `Drawer` into the XML\n\nThe `MaterialDrawerSliderView` has to be provided as child of the `DrawerLayout` and will as such act as the slider\n\n```kotlin\n\u003Candroidx.drawerlayout.widget.DrawerLayout xmlns : android =\"http:\u002F\u002Fschemas.android.com\u002Fapk\u002Fres\u002Fandroid\"\nxmlns:app = \"http:\u002F\u002Fschemas.android.com\u002Fapk\u002Fres-auto\"\nandroid:id = \"@+id\u002Froot\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:fitsSystemWindows=\"true\">\n\n    ... your content ...\n\n    \u003Ccom.mikepenz.materialdrawer.widget.MaterialDrawerSliderView\n        android:id=\"@+id\u002Fslider\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"match_parent\"\n        android:layout_gravity=\"start\"\n        android:fitsSystemWindows=\"true\" \u002F>\n\u003C\u002Fandroidx.drawerlayout.widget.DrawerLayout>\n```\n### 3. Add the `DrawerStyle` to your theme\n\n```xml\n\u003Cstyle name=\"SampleApp.DayNight\" parent=\"Theme.Material3.DayNight.NoActionBar\">\n    ...\n    \u003Citem name=\"materialDrawerStyle\">@style\u002FWidget.MaterialDrawerStyle\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerHeaderStyle\">@style\u002FWidget.MaterialDrawerHeaderStyle\u003C\u002Fitem>\n    ...\n\u003C\u002Fstyle>\n```\n\nGreat. Your drawer is now ready to use.\n\n### Note\n\n> Using v9.x with Material 3 theming requires a `Material3` theme as base for the activity.\n\n# Additional Setup\n### Add items and adding some functionality\n\n```kotlin\n\u002F\u002Fif you want to update the items at a later time it is recommended to keep it in a variable\nval item1 = PrimaryDrawerItem().apply { nameRes = R.string.drawer_item_home; identifier = 1 }\nval item2 = SecondaryDrawerItem().apply { nameRes = R.string.drawer_item_settings; identifier = 2 }\n\n\u002F\u002F get the reference to the slider and add the items\nslider.itemAdapter.add(\n\t    item1,\n\t    DividerDrawerItem(),\n\t    item2,\n\t    SecondaryDrawerItem().apply { nameRes = R.string.drawer_item_settings }\n)\n\n\u002F\u002F specify a click listener\nslider.onDrawerItemClickListener = { v, drawerItem, position ->\n    \u002F\u002F do something with the clicked item :D\n    false\n}\n```\n\n### Selecting an item\n```kotlin\n\u002F\u002Fset the selection to the item with the identifier 1\nslider.setSelection(1)\n\u002F\u002Fset the selection to the item with the identifier 2\nslider.setSelection(item2)\n\u002F\u002Fset the selection and also fire the `onItemClick`-listener\nslider.setSelection(1, true)\n```\n\nBy default, when a drawer item is clicked, it becomes the new selected item. If this isn't the expected behavior,\nyou can disable it for this item using `isSelectable = false`:\n```kotlin\nSecondaryDrawerItem().apply { nameRes = R.string.drawer_item_dialog; isSelectable = false }\n```\n\n### Modify items or the drawer\n\n```kotlin\n\u002F\u002Fmodify an item of the drawer\nitem1.apply {\n  nameText = \"A new name for this drawerItem\"; badge = StringHolder(\"19\")\n  badgeStyle = BadgeStyle().apply { textColor = ColorHolder.fromColor(Color.WHITE); color = ColorHolder.fromColorRes(R.color.md_red_700) }\n}\n\u002F\u002Fnotify the drawer about the updated element. it will take care about everything else\nslider.updateItem(item1)\n\n\u002F\u002Fto update only the name, badge, icon you can also use one of the quick methods\nslider.updateName(1, \"A new name\")\n\n\u002F\u002Fthe result object also allows you to add new items, remove items, add footer, sticky footer, ..\nslider.addItem(DividerDrawerItem())\nslider.addStickyFooterItem(PrimaryDrawerItem().apply { nameTest = \"StickyFooter\" })\n\n\u002F\u002Fremove items with an identifier\nslider.removeItem(2)\n\n\u002F\u002Fopen \u002F close the drawer\nslider.drawerLayout?.openDrawer(slider)\nslider.drawerLayout?.closeDrawer(slider)\n\n\u002F\u002Fget the reference to the `DrawerLayout` itself\nslider.drawerLayout\n```\n\n### Add profiles and an AccountHeader\n```kotlin\n\u002F\u002F Create the AccountHeader\nheaderView = AccountHeaderView(this).apply {\n    attachToSliderView(slider) \u002F\u002F attach to the slider\n    addProfiles(\n        ProfileDrawerItem().apply { nameText = \"Mike Penz\"; descriptionText = \"mikepenz@gmail.com\"; iconRes = R.drawable.profile; identifier = 102 }\n    )\n    onAccountHeaderListener = { view, profile, current ->\n        \u002F\u002F react to profile changes\n        false\n    }\n    withSavedInstance(savedInstanceState)\n}\n```\n\n### Android-Iconics support\nThe MaterialDrawer provides an extension for the [Android-Iconics](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FAndroid-Iconics) library. This allows you to create your `DrawerItems` with an icon from any font.\n\nChoose the fonts you need. [Available Fonts](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FAndroid-Iconics#2-choose-your-desired-fonts)\n\n```gradle\n\u002F\u002F Add for Android-Iconics support\nimplementation \"com.mikepenz:materialdrawer-iconics:${lastestMaterialDrawerRelease}\"\n\n\u002F\u002F fonts\nimplementation 'com.mikepenz:google-material-typeface:x.y.z@aar' \u002F\u002FGoogle Material Icons\nimplementation 'com.mikepenz:fontawesome-typeface:x.y.z@aar'     \u002F\u002FFontAwesome\n```\n\n```kotlin\n\u002F\u002Fnow you can simply use any icon of the Google Material Icons font\nPrimaryDrawerItem().apply { iconicsIcon = GoogleMaterial.Icon.gmd_wb_sunny }\n\u002F\u002FOr an icon from FontAwesome\nSecondaryDrawerItem().apply { iconicsIcon = FontAwesomeBrand.Icon.fab_github }\n```\n\n# Advanced Setup\n\nFor advanced usecases. Please have a look at the provided sample activities.\n\n## Load images via url\nThe MaterialDrawer supports fetching images from URLs and setting them for the Profile icons. As the MaterialDrawer does not contain an ImageLoading library\nthe 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)\n* SAMPLE using [PICASSO](https:\u002F\u002Fgithub.com\u002Fsquare\u002Fpicasso)\n* [SAMPLE](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FMaterialDrawer\u002Fblob\u002Fdevelop\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fmikepenz\u002Fmaterialdrawer\u002Fapp\u002FCustomApplication.kt) using [GLIDE](https:\u002F\u002Fgithub.com\u002Fbumptech\u002Fglide)\n\n```kotlin\n\u002F\u002Finitialize and create the image loader logic\nDrawerImageLoader.init(object : AbstractDrawerImageLoader() {\n    override fun set(imageView: ImageView, uri: Uri, placeholder: Drawable) {\n        Picasso.get().load(uri).placeholder(placeholder).into(imageView)\n    }\n\n    override fun cancel(imageView: ImageView) {\n        Picasso.get().cancelRequest(imageView)\n    }\n    \n    \u002F*\n    override fun set(imageView: ImageView, uri: Uri, placeholder: Drawable, tag: String?) {\n        super.set(imageView, uri, placeholder, tag)\n    }\n\n    override fun placeholder(ctx: Context): Drawable {\n        return super.placeholder(ctx)\n    }\n\n    override fun placeholder(ctx: Context, tag: String?): Drawable {\n        return super.placeholder(ctx, tag)\n    }\n    *\u002F\n})\n```\n\nAn implementation with [GLIDE v4](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002FMaterialDrawer\u002Fblob\u002Fdevelop\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fmikepenz\u002Fmaterialdrawer\u002Fapp\u002FCustomApplication.kt) (See tag v6.1.1 for glide v3 sample) can be found in the sample application\n\n## JVM Target 1.8\n\n```\n\u002F\u002F Since 8.1.0 the drawer includes core ktx 1.3.0 which requires jvm 1.8\nkotlinOptions {\n    jvmTarget = \"1.8\"\n}\n```\n## Style the drawer 🖌️\n\n### Custom style - styles.xml\nCreate 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.\n\n```xml\n\u002F\u002F define a custom drawer style\n\u003Cstyle name=\"Widget.MaterialDrawerStyleCustom\" parent=\"Widget.MaterialDrawerStyle\">\n    \u003Citem name=\"materialDrawerInsetForeground\">#4000\u003C\u002Fitem>\n    \u003C!-- MaterialDrawer specific values -->\n    \u003Citem name=\"materialDrawerBackground\">?colorSurface\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerPrimaryText\">@color\u002Fcolor_drawer_item_text\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerPrimaryIcon\">@color\u002Fcolor_drawer_item_text\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerSecondaryText\">@color\u002Fcolor_drawer_item_text\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerSecondaryIcon\">@color\u002Fcolor_drawer_item_text\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerDividerColor\">?colorOutline\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerSelectedBackgroundColor\">?colorSecondaryContainer\u003C\u002Fitem>\n\u003C\u002Fstyle>\n\n\u002F\u002F define a custom header style\n\u003Cstyle name=\"Widget.MaterialDrawerHeaderStyleCustom\" parent=\"\">\n    \u003Citem name=\"materialDrawerCompactStyle\">true\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerHeaderSelectionText\">?colorOnSurface\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerHeaderSelectionSubtext\">?colorOnSurface\u003C\u002Fitem>\n\u003C\u002Fstyle>\n\n\u002F\u002F define the custom styles for the theme\n\u003Cstyle name=\"SampleApp\" parent=\"Theme.Material3.Light.NoActionBar\">\n    ...\n    \u003Citem name=\"materialDrawerStyle\">@style\u002FWidget.MaterialDrawerStyleCustom\u003C\u002Fitem>\n    \u003Citem name=\"materialDrawerHeaderStyle\">@style\u002FWidget.MaterialDrawerHeaderStyleCustom\u003C\u002Fitem>\n    ...\n\u003C\u002Fstyle>\n```\n\n### Adjust BezelImageView style\n\nOverwrite the Style of the BezelImageView for the whole MaterialDrawer\n   \n```xml\n\u003Cstyle name=\"BezelImageView\">\n    \u003Citem name=\"biv_maskDrawable\">@drawable\u002Fmaterial_drawer_rectangle_mask\u003C\u002Fitem>\n    \u003Citem name=\"biv_drawCircularShadow\">false\u003C\u002Fitem>\n    \u003Citem name=\"biv_selectorOnPress\">@color\u002Fmaterial_drawer_primary\u003C\u002Fitem>\n    \u003Citem name=\"android:scaleType\">centerInside\u003C\u002Fitem>\n\u003C\u002Fstyle>\n```\n\n# Used by\n(feel free to send me new projects)\n\n* [Screener](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=de.toastcode.screener)\n* [Meldmail](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.meldmail)\n* [Academic Schedule](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.auebcsschedule.ppt)\n* [Sprit Club](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=at.idev.spritpreise)\n* [StickyNotes](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.jsvmsoft.stickynotes)\n* [MLManager](https:\u002F\u002Fgithub.com\u002Fjaviersantos\u002FMLManager)\n* [Fimpl](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.danielZET.fimpl)\n* [Teacher Gradebook](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.apolosoft.cuadernoprofesor)\n* [AS Sales Management](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.armsoft.mtrade)\n* [Sporza Voetbal](http:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=be.vrt.mobile.android.sporza.voetbal)\n* [Atmosphere](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.peakpocketstudios.atmosphere)\n* [Fitness Challenge](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.isidroid.fitchallenge)\n* [I'm Reading Quran - Kur'an Okuyorum](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.homemade.kuranokuma)\n* [Makota Money Manager](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=be.jatra.makota)\n* [Companion for Band](https:\u002F\u002Fgithub.com\u002Fadithya321\u002FCompanion-for-Band)\n* [Recipedia](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.md.recipedia)\n* [Right Сourse - ruble course](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.currency.work.currencychecker)\n* [Gameru](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=net.gameru)\n* [Boost for reddit](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.rubenmayayo.reddit)\n* [Calendula](https:\u002F\u002Fgithub.com\u002Fcitiususc\u002Fcalendula)\n* [MyTimes](https:\u002F\u002Fgithub.com\u002Fdebo1994\u002FMyTimes)\n* [VoIP By Antisip](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.antisip.vbyantisip)\n* [MBox - One Place for Entertainment](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.paperwrrk.android.mbox)\n* [D Notes - Smart and Material Note Taking](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.dvdb.bergnotes)\n* [Moviebase](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.moviebase)\n* [MyFuelLog2](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.acty.myfuellog2)\n* [MECSol](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=tk.rlta.mecsol)\n* [3D Geeks: Thingiverse Browser for 3D Printing](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=work.twob.threed)\n* [Tusky: Mastodon Client for Android](https:\u002F\u002Fgithub.com\u002Ftuskyapp\u002FTusky)\n* [Tibia Live](https:\u002F\u002Ftibia.space\u002F)\n* [Walkaholic](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.walkaholic.hikeapp)\n* [Pachli: Mastodon Client](https:\u002F\u002Fpachli.app)\n\n# Articles about the MaterialDrawer\n* [java-help.ru - MaterialDrawer tutorial](http:\u002F\u002Fjava-help.ru\u002Fmaterial-navigationdrawer\u002F)\n* [MaterialDrawer in multiple activities](https:\u002F\u002Fandroid.jlelse.eu\u002Fandroid-using-navigation-drawer-across-multiple-activities-the-easiest-way-b011f152aebd)\n\n\n# Credits\n\n- Mirosław Stanek - [GitHub](https:\u002F\u002Fgithub.com\u002Ffrogermcs)\n\t- For his InstaMaterial concept and the idea of inflating the drawerLayout [InstaMaterial Concept](http:\u002F\u002Ffrogermcs.github.io\u002FInstaMaterial-concept-part-7-navigation-drawer\u002F)\n\n- Lunae Luman - [Behance](https:\u002F\u002Fwww.behance.net\u002Fgallery\u002F18526001\u002FMaterial-Wallpaper) for the Header Image\n\n# Developed By\n\n- Mike Penz\n  - [mikepenz.dev](https:\u002F\u002Fmikepenz.dev) - [blog.mikepenz.dev](https:\u002F\u002Fblog.mikepenz.dev) - \u003Cmikepenz@gmail.com>\n  - [paypal.me\u002Fmikepenz](http:\u002F\u002Fpaypal.me\u002Fmikepenz)\n  - [Automatic changelog generation action](https:\u002F\u002Fgithub.com\u002Fmarketplace\u002Factions\u002Frelease-changelog-builder)\n\n# License\n\n    Copyright 2021 Mike Penz\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","MaterialDrawer 是一个适用于Android项目的灵活易用的侧滑菜单库，支持最新的Material Design 2设计规范。它基于Kotlin编写，使用了AndroidX支持库，并兼容至API Level 16。核心功能包括易于集成、支持矢量图标和图标字体、多种预设主题与自定义选项、实时颜色调整、以及对RTL语言的支持等。此外，还提供了如账户切换器、Gmail风格的迷你抽屉、可扩展项目及徽章显示等功能。此库非常适合需要实现美观且功能丰富的导航抽屉的应用场景，无论是新项目还是已有项目的升级都非常适用。","2026-06-11 03:10:57","top_language"]