本文介绍如何使用DrawerLayout和NavigationView实现侧滑菜单栏的效果。

效果如下:
Layout布局
<android.support.v4.widget.DrawerLayout xmlns:android=“http://schemas.android.com/apk/res/android” xmlns:app=“http://schemas.android.com/apk/res-auto” android:id=“@+id/drawer_layout” android:layout_width=“match_parent” android:layout_height=“match_parent” android:fitsSystemWindows=“true”> <android.support.design.widget.NavigationView android:id=“@+id/navigation_view” android:layout_width=“wrap_content” android:layout_height=“match_parent” android:layout_gravity=“start” app:headerLayout=“@layout/navigation_header” app:menu=“@menu/drawer” /> </android.support.v4.widget.DrawerLayout>
NavigationView需要设置app:headerLayout 和 app:menu,headerLayout对应菜单的上面部分,一般用来显示用户信息,menu则对应实际的菜单项文件。
headerLayout
<LinearLayout 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="192dp" android:background="?attr/colorPrimaryDark" android:gravity="center" android:orientation="vertical" android:padding="16dp" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/profile_image" android:layout_width="72dp" android:layout_height="72dp" android:layout_marginTop="20dp" android:src="@mipmap/profile" app:border_color="@color/primary_light" app:border_width="2dp" /> <TextView android:layout_marginTop="10dp" android:textSize="18sp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="APP开发者" android:gravity="center" android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> </LinearLayout>
menu
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <group android:checkableBehavior="single"> <item android:id="@+id/navigation_item_example" android:icon="@drawable/ic_favorite" android:title="@string/navigation_example" /> <item android:id="@+id/navigation_item_blog" android:icon="@drawable/ic_favorite" android:title="@string/navigation_my_blog" /> <item android:id="@+id/navigation_item_about" android:icon="@drawable/ic_favorite" android:title="@string/navigation_about" /> </group> </menu>
代码实现
ActionBarDrawerToggle可以配合Toolbar,实现Toolbar上菜单按钮开关效果。
//设置Toolbar
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
//设置DrawerLayout
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar,
R.string.drawer_open, R.string.drawer_close);
mDrawerToggle.syncState();
mDrawerLayout.setDrawerListener(mDrawerToggle);
//设置NavigationView点击事件
mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
setupDrawerContent(mNavigationView);
//设置NavigationView点击事件
private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.navigation_item_example:
switchToExample();
break;
case R.id.navigation_item_blog:
switchToBlog();
break;
case R.id.navigation_item_about:
switchToAbout();
break;
}
menuItem.setChecked(true);
mDrawerLayout.closeDrawers();
return true;
}
});
}
项目源码已发布到Github,以后慢慢加入其他控件的使用。
源码地址:MaterialDesignExample
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Material
# Design
# DrawerLayout
# NavigationView
# 侧滑菜单
# Android中DrawerLayout实现侧滑菜单效果
# Android Drawerlayout实现侧滑菜单效果
# Android使用DrawerLayout实现侧滑菜单效果
# Android之侧滑菜单DrawerLayout的使用介绍
# Android组件DrawerLayout仿网易新闻v4.4侧滑菜单
# Android使用DrawerLayout实现仿QQ双向侧滑菜单
# Android使用DrawerLayout实现双向侧滑菜单
# 如何使用
# 大家多多
# 则对
# 菜单项
# 按钮开关
# color
# span
# strong
# dp
# LinearLayout
# background
# layout
# headerLayout
# start
# navigation_header
# layout_gravity
# drawer
# menu
# Dark
# de
相关文章:
重庆网站制作公司哪家好,重庆中考招生办官方网站?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
jQuery 常见小例汇总
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
Swift中switch语句区间和元组模式匹配
高端智能建站公司优选:品牌定制与SEO优化一站式服务
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
建站主机SSH密钥生成步骤及常见问题解答?
如何在腾讯云服务器上快速搭建个人网站?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
如何快速生成高效建站系统源代码?
建站之星安装提示数据库无法连接如何解决?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
网站制作网站,深圳做网站哪家比较好?
香港服务器租用每月最低只需15元?
用v-html解决Vue.js渲染中html标签不被解析的问题
视频网站制作教程,怎么样制作优酷网的小视频?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
建站之星备案流程有哪些注意事项?
如何获取上海专业网站定制建站电话?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
python的本地网站制作,如何创建本地站点?
中山网站推广排名,中山信息港登录入口?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何高效生成建站之星成品网站源码?
建站之星ASP如何实现CMS高效搭建与安全管理?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
建站之星代理费用多少?最新价格详情介绍
电商平台网站制作流程,电商网站如何制作?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
如何在阿里云ECS服务器部署织梦CMS网站?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
如何通过西部数码建站助手快速创建专业网站?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何在阿里云部署织梦网站?
建站主机选购指南:核心配置优化与品牌推荐方案
Android自定义listview布局实现上拉加载下拉刷新功能
如何快速搭建高效WAP手机网站吸引移动用户?
建站OpenVZ教程与优化策略:配置指南与性能提升
高性能网站服务器部署指南:稳定运行与安全配置优化方案
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
*请认真填写需求信息,我们会在24小时内与您取得联系。