发现 
其他开发者工具
MaterialDrawer:Android 抽屉导航库
为 Android 项目提供灵活易用的 Material Design 侧边抽屉,支持账户切换、徽章和主题定制。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v9.0.2
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。
详细介绍
项目简介
MaterialDrawer 是面向 Android 项目的侧边抽屉(Drawer)库,使用 Kotlin 编写,基于 RecyclerView,遵循 Google Material Design 指南,并提供 Material 3 支持。它把抽屉导航常用的列表、账户切换、主题和定制能力整合在一起,目标是让开发者以尽量少的代码完成集成。
主要功能
- 集成简单,兼容至 API Level 16
- 使用 AndroidX 支持库,基于 RecyclerView
- 内置 AccountSwitcher(账户切换)
- 提供多种主题,可动态修改颜色
- 内置多种默认抽屉条目,支持可展开条目、徽章、自定义条目、粘性页脚或头部
- 支持 RTL 和类似 Gmail 的 MiniDrawer
- 可结合 Android-Iconics 使用矢量图标与图标字体(Google Material Icons、Material Community Icons、FontAwesome 等)
- 提供 NavController 支持(materialdrawer-nav 模块)
安装与使用
- 添加 Gradle 依赖:
implementation("com.mikepenz:materialdrawer:${latestRelease}")
同时引入所需的 support 库模块:
implementation "androidx.appcompat:appcompat:${versions.appcompat}"
implementation "androidx.recyclerview:recyclerview:${versions.recyclerView}"
implementation "androidx.annotation:annotation:${versions.annotation}"
implementation "com.google.android.material:material:1.5.0-alpha05" // requires at least 1.5.0-x
implementation "androidx.constraintlayout:constraintlayout:${versions.constraintLayout}"
可选模块:
// NavController 支持
implementation "com.mikepenz:materialdrawer-nav:${lastestMaterialDrawerRelease}"
// Android-Iconics 支持
implementation "com.mikepenz:materialdrawer-iconics:${lastestMaterialDrawerRelease}"
- 在 DrawerLayout 中加入 MaterialDrawerSliderView:
<androidx.drawerlayout.widget.DrawerLayout ...>
... 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>
- 在主题中加入 DrawerStyle:
<style name="SampleApp.DayNight" parent="Theme.Material3.DayNight.NoActionBar">
<item name="materialDrawerStyle">@style/Widget.MaterialDrawerStyle</item>
<item name="materialDrawerHeaderStyle">@style/Widget.MaterialDrawerHeaderStyle</item>
</style>
- 添加条目与点击监听:
val item1 = PrimaryDrawerItem().apply { nameRes = R.string.drawer_item_home; identifier = 1 }
val item2 = SecondaryDrawerItem().apply { nameRes = R.string.drawer_item_settings; identifier = 2 }
slider.itemAdapter.add(item1, DividerDrawerItem(), item2)
slider.onDrawerItemClickListener = { v, drawerItem, position ->
false
}
还可通过 slider.setSelection(...) 选择条目,使用 slider.updateItem(...) 更新条目,或通过 slider.drawerLayout?.openDrawer(slider) 打开抽屉。账户头部可通过 AccountHeaderView 添加资料并绑定到 slider。
注意事项
- 使用 v9.x 的 Material 3 主题时,Activity 需要以 Material3 主题作为基础。
- 从低于 8.0.0 的版本升级时,请参考项目提供的 MIGRATION.md。
- 自 8.1.0 起,库包含 core ktx 1.3.0,需要 JVM Target 1.8:
kotlinOptions {
jvmTarget = "1.8"
}
- 通过 URL 加载图片时,MaterialDrawer 不自带图片加载库,需要开发者自行接入 Picasso、Glide 等实现
DrawerImageLoader。 - 许可证:Apache-2.0。
本作品整理自 GitHub 开源项目 mikepenz/MaterialDrawer,原作者 @mikepenz,许可证 Apache-2.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v9.0.2当前版本
升级至 Gradle 7.5.1 并更新全部依赖,修复 API 22 及以下 getColorStateList 问题,完善依赖提交与 CI 流程。
评论