博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Material Design控件学习(二)——NavigationView的学习和使用
阅读量:7176 次
发布时间:2019-06-29

本文共 2620 字,大约阅读时间需要 8 分钟。

前言

上次我们学习了,今天我们继续学习MaterialDesign(简称MD)控件——NavigationView。

正如其名,NavigationView,导航View。一般我们用它和DrawerLayout实现抽屉式导航设计,效果如下图。

8942f980gw1f0htcb1ysrj20qa176td0.jpg

学习

文档地址:

8942f980gw1f0htmgacsmj20t80b2gn7.jpg

通过学习官方文档,我们知道NavigationView继承自FrameLayout。一般用于应用的导航菜单,菜单的内容来自于menu文件。NavigationView通常放置在DrawerLayout内部。

其中:

  • android:fitsSystemWindows的值用于设置状态栏透明化与否。
  • android:layout_gravity可设置抽屉,也就是NavigationView从左边或是右边打开。
  • app:menu用于设置菜单内容的xml布局。
  • app:headerLayout用于设置NavigationView的HeaderView的xml布局文件。

用法

下面我们通过模仿实现的效果来学习NavigationView的基本用法。

  1. 引用SupportDesign库

    compile 'com.android.support:design:23.1.1'

2.编写布局代码

首先编写Activity的布局代码:

编写NavigationView中的menu的xml文件

注意: 需要给group设置id,才会出现分割线。参考

3.实现onNavigationItemSelected接口来处理抽屉菜单项的选中事件。

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);        navigationView.setNavigationItemSelectedListener(this);        mTextView = (TextView) findViewById(R.id.textView);    @SuppressWarnings("StatementWithEmptyBody")    @Override    public boolean onNavigationItemSelected(MenuItem item) {        int id = item.getItemId();        String string = null;        switch (id){            case R.id.nav_me:                string = "我";                break;            case R.id.nav_about:                string = "关于";                break;            case R.id.nav_friend:                string = "好友";                break;            case R.id.nav_manage:                string = "通知";                break;            case R.id.nav_message:                string = "私信";                break;            case R.id.nav_night:                string = "夜间模式";                break;            case R.id.nav_notification:                string = "通知";                break;            case R.id.nav_setting:                string= "设置";                break;            case R.id.nav_suggestion:                string = "意见反馈";                break;            case R.id.nav_theme:                string = "主题风格";                break;        }        if (!TextUtils.isEmpty(string))            mTextView.setText("你点击了"+string);        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);        drawer.closeDrawer(GravityCompat.START);        return true;    }

运行效果

8942f980gw1f0hy494wt3g20br0jpgyy.gif

完整代码我已经上传到我的Github中,欢迎各位star&fork。

地址

如果你觉得这篇文章对你的学习有所帮助,不妨推荐一下,也可以关注我的Github

原文地址:http://www.cnblogs.com/JohnTsai/p/5172056.html
你可能感兴趣的文章
SQLSERVER 18056 错误
查看>>
【普及】中小企业项目上线的一般流程
查看>>
mvn常用命令
查看>>
C语言之程序中内存的来源:栈 堆 数据段
查看>>
2012R2 VM on Hyper-v 2008 R2错误解决
查看>>
BIOS锁定纯UEFI启动的解锁办法
查看>>
php打包备份好的数据库文件(也可打包别的文件)
查看>>
JVM原理及调优
查看>>
读书笔记--101个shell脚本 之#12--函数
查看>>
TCP/IP之(四)Delay ack 和 Nagle算法
查看>>
linux学习:selinux 禁用后(disabled)Linux系统无法正常启动解决
查看>>
ldd ldconfig LD_LIBRARY_PATH的关系
查看>>
关于tomcat和jetty对比(不喜欢jetty的勿看)
查看>>
grafana使用详解
查看>>
linux 文件同步 rsync+crontab
查看>>
git如何删除远程仓库的某次错误提交
查看>>
LAMP架构讲解(续一)
查看>>
51la图片做网店流量统计
查看>>
压力测试工具JMeter入门教程
查看>>
MySQL 百万级分页优化 数据库优化
查看>>