navigation android,Android开发之NavigationView详解

这篇博客介绍了如何利用Android Design Support Library中的NavigationView组件快速实现抽屉菜单界面。通过在DrawerLayout中嵌套NavigationView,并配置headerLayout和menu资源,可以便捷地创建带有头像和菜单选项的侧滑菜单。此外,还展示了如何通过Java代码设置菜单项点击监听,实现导航项的选择反馈和其他操作。
摘要由CSDN通过智能技术生成

2.2.5用NavigationView实现抽屉菜单界面

对于抽屉界面我们都不陌生,此前写这种抽屉界面都需要我们自定义。自己写的话,花点时间也能做出好看的侧拉菜单,但总是要耗费时间,于是  Design Support  Library提供了NavigationView来帮助我们实现抽屉菜单界面。和普通的侧拉菜单实现方式一样,所有的东西还是都放在一个DrawerLayout中,用NavigationView来替代我们此前自定义的控件。我们还是在2.2.4节代码的基础上进行修改。首先我们要修改主界面布局,代码如下所示:

832ea7b954dc0d46c89ca0ea807860f5.png

21d9fa9e7da3b66c4d1c40e5c991de18.png

DrawerLayout标签包含了主界面的布局以及抽屉的布局,这个抽屉界面就是NavigationView,NavigationView标签下的app:headerLayout=””可以引入头部文件,app:menu=””则引入菜单的布局。我们查看引入的头部文件navigation_header.xml。

87694a8be1eea009ff7793838de60ebd.png

头部文件很简短,其包含了一个ImageView用来显示图片,以及一个TextView用来显示文字。接下来看看app:menu=”@menu/drawer_view”,引入菜单文件drawer_view.xml,代码如下所示:

a9016bf2edf70af5c0ac6abeea6cfea7.png

b57a787d82c11220bbe74b4cfbe76fbb.png

菜单元素放在  group标签之下,同时用<group     android:checkableBehavior=”single”>声明每次只能有一个item被选中。在menu标签中包含了4个item,每个item又包含了icon和title。程序效果如图2-19所示。

79f6072d13bed0eec480ba3140a37dea.png

图2-19没有分组的菜单

我们还可以通过为item添加子菜单来实现带有头部的分组效果,每添加一个分组,都会在该组的最上面自动添加一根分割线,以和普通的item进行区分。

5e25b0a72a66d9751efd56f820865bf7.png

0f2afdd85f1e18ec04d8d2d3e7694898.png

在原有代码的基础上,我们添加了分组标题其他”,效果如图2-20所示。

408e06be0bee472ef0c65e2b6bbf00a7.png

图2-20加入分组的菜单

接下来在Java代码中引用布局。

@Override

de687d7fd7f6d93229823eae6528719b.png

我们用setNavigationItemSelectedListener()方法来设置当导航项被点击时的回调。在回调方法onNavigationItemSelected(MenuItem               menuItem)中会向我们提供被选中的MenuItem,我们得到这个MenuItem对象就可以处理MenuItem相关的功能,比如获取该MenuItem的标题等。另外,通过这个回调我们也可以改变item选中状态、关闭导航菜单,以及其他我们需要的操作。当然,别忘了对Toolbar的菜单选项进行监听回调,否则抽屉就出不来了。具体代码如下所示:

d691c54e2353f7d12b174d3ebc1fd1bc.png

853f24a3de4e9f76e21c90aae0bc3ba6.png

作者:

喜欢围棋和编程。查看的所有文章

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值