简介

要想实现抽屉式的效果,在之前我们大都是使用的SlidingMenu等第三方库。不过Google发布了DrawerLayout来实现相同的效果。各有优缺点吧。这里我们介绍NavigationView的使用。
先来看下最终的效果。

Demo

先看下实际运行的效果。感觉还是蛮不错的吧

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/drawer_main"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="55dp"android:background="@color/main"app:popupTheme="@style/ThemeOverlay.AppCompat.Light"app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"app:title="Title"app:titleTextColor="@color/white"/></LinearLayout><android.support.design.widget.NavigationViewandroid:id="@+id/nav_main"android:layout_width="250dp"android:layout_height="match_parent"android:layout_gravity="start"android:fitsSystemWindows="true"app:headerLayout="@layout/layout_nav_header"app:itemIconTint="@null"app:itemTextColor="#009688"app:menu="@menu/nav"/>
</android.support.v4.widget.DrawerLayout>

需要注意的是,需要按照官方文档中的说明将你的布局放在NagigationView的上方。不然会有一些意想不到的效果,就因为这个,之前吃了挺大的亏。
通过headerLayout设置menu的头视图。通过menu属性设置每一个item。
NavigationView有几个属性:

  • itemBackground : 设置每一个item的背景颜色。
  • itemIconTint: 改变menu中的图标颜色
  • itemTextAppearance:设置每个item的字体样式。
  • itemTextColor:设置每个item的文字颜色。

Toggle

设置toggleDrawerLayout进行联动。方法很简单。就几句代码。

 ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.open, R.string.close);toggle.syncState();drawer.addDrawerListener(toggle);

item 点击时间。

通过设置NavigationItemSelectedListener来为每一个条目设置点击事件。

navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(@NonNull MenuItem item) {switch (item.getItemId()) {case R.id.nav_music:break;case R.id.nav_movie:break;case R.id.nav_setting:break;}return false;}});

监听back

当抽屉展开的时候,点击返回按钮收起收起,代码很简单。

  @Overridepublic void onBackPressed() {if (drawer.isDrawerOpen(GravityCompat.START)) {drawer.closeDrawer(GravityCompat.START);} else {super.onBackPressed();}}

完成代码

GitHub地址

Android Design Library之三: NavigationView相关推荐

  1. android design library提供的TabLayout的用法

    在开发中,我们常常需要ViewPager结合Fragment一起使用,如下图: 1 我们可以使用三方开源的PagerSlidingTabStrip去实现,或者viewpagerindicator,我一 ...

  2. Android Design Support Library初探-更新中

    导读 这个兼容库容易和Google之前发布的 Android Support Library 22.1 混淆,两者的区别在于: Android Support Library 22.1 只是支持了一些 ...

  3. android support design library eclipse,Eclipse下使用Android Design Support Library中的控件

    我只测试了 Design效果的Login和Scrolling效果控件. 最下面奉上2个demo. 1.File\import导入sdk\extras\android\support\V7\appcom ...

  4. Android Design Support Library 中控件的使用简单介绍(一)

    Android Design Support Library 中控件的使用简单介绍(一) 介绍 在这个 Lib 中主要包含了 8 个新的 material design 组件!最低支持 Android ...

  5. Material Design 开发利器:Android Design Support Library 介绍

    Material Design 开发利器:Android Design Support Library 介绍 本文翻译自著名博客 Android Developers,原作者是 Ian Lake,点击 ...

  6. Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

    目前,我相信,没有任何 Android 开发者不知道材料设计的,因为它的设计在过去的一年震惊了世界,正式的变成了一个设计理念. 令人惊讶的是,在 Android 应用中材料设计是不容易实现的,因为材料 ...

  7. 安卓Android Support Design Library——Snackbar

    介绍: Snackbar是Android Support Design Library库支持的一个控件,用于在界面下面提示一些关键信息,跟Toast不同的地方是SnackBar允许用户向右滑动消除它, ...

  8. Android Design新控件之TextInputLayout 文本输入布局与自定义颜色简介

    Android 从5.0版本开始,新增了Android Materia Design库,让开发者高效的实现炫酷的UI效果 推荐: TextInputLayout(文本输入布局) TabLaout(选项 ...

  9. 如何更新android v7 support library,新手入门之Android Support Library | Soo Smart!

    Support Library 这个支持包是一个一系列代码库,它提供了Android framework APIs的向后兼容的版本以及一些只有通过这个库包API才有的feature特性.每个Suppo ...

最新文章

  1. keepalived+nginx安装与配置
  2. 如何不屏蔽Android系统的返回按键
  3. 【XAudio2】8.怎么播放音效
  4. Essential Phone PH1原生系统常见问题以及解答
  5. CEGUI的安装简要总结
  6. 一个求整系数多项式的全部有理根的方法
  7. linux中pak命令,Linux常用包管理及命令
  8. 卓越产品计划丨神策分析性能优化详解:数据重组织查询优化
  9. 记录一个可以word,xls,PDF互转思维导图的工具
  10. 医药魔方完成数千万元A轮融资,大数据支持中国制药产业升级
  11. 代理记账的基本流程是什么
  12. 证券行业智慧化转型思考
  13. php制作个人简介代码_PHP制作用户注册系统的详细代码
  14. thinkphp整合单笔转账到支付宝账户文件配置
  15. 2021-CVPR-图像修复论文导读《TransFill: Reference-guided Image Inpainting by Merging Multiple Color and ~~~》
  16. 【全网最全最细】青龙面板搭配Ninja+依赖+Ninja配置的超细讲解教程!!!
  17. 强化IT能力 中国移动OpenStack玩“大”的
  18. 免费的Gif制作工具-录屏、录像
  19. linux 安装宝塔及配置关关采集(完整过程介绍)
  20. 计算机网考模拟系统,全国计算机等级考试考网模拟系统

热门文章

  1. android exchange服务,带有“ Service com.android.exchange.ExchangeService
  2. Springboot 打包时引入外部jar
  3. python哨兵循环_Python通用循环的构造方法实例分析
  4. 利用python卷积神经网络手写数字识别_Keras深度学习:卷积神经网络手写数字识别...
  5. c语言打开当前目录下的文件_Linux下自定义文件默认打开方式
  6. archlinux详细安装步骤_Archlinux 安装教程图文详解
  7. 服务器otter部署-实现MySql数据同步
  8. 智能车竞赛技术报告 | 智能车视觉 - 首都师范大学 - 首师智能视觉
  9. 智能车竞赛技术报告 | 智能视觉组 - 大连海事大学 - 菜鸡啄米
  10. 中文TTS文字转语音合成模块合成成品带喇叭 替代SYN6288和XFS5152