Android|Android NavigationView的使用详解以及各种问题解决方案
一:先看效果图
文章图片
这个效果图分为三部分:头布局 menu(即中间的item部分) 尾布局
二:NavigationView的定义
Android5.0以前。我们做抽屉菜单的时候,左或右边滑出来的那一部分的布局都是由我们自定义的。于是Google在5.0之后推出了NavitationView,就是我们左边滑出来的这个菜单。这个菜单整体上分为两部分,上面一部分叫做HeaderLayout,下面的那些点击项都是menu。
三:Navigation的使用(直接上代码)
解释:
这是主界面
这是侧滑界面
android:layout_gravity="start"或者Android:layout_gravity="left" :表示侧滑菜单从左边滑出,改成right变为从右边滑出。
app:headerLayout="@layout/nav_header_main":表示头布局
app:menu="@menu/activity_main_drawer":中间部分,menu的点击部分
头布局代码:layout/nav_header_main
menu/activity_main_drawer布局
四:出现的问题
Q1:怎么在item中间加一条分割线
【Android|Android NavigationView的使用详解以及各种问题解决方案】Answer:把item放在group里面。注意group要有id。
代码:
Q2:怎么获得头布局的控件
Answer:
View headerView =navigationView.getHeaderView(0);
//获得头布局
获取imageview
ImageViewmImgPersonHead= (ImageView) headerView.findViewById(R.id.img_person_head);
Q3:Item的点击事件:
navigationView.setNavigationItemSelectedListener(newNavigationView.OnNavigationItemSelectedListener() {@Overridepublic booleanonNavigationItemSelected(MenuItem item) {//在这里处理item的点击事件
switch(item.getItemId()) {
caseR.id.xxx:startActivity(newIntent(this,xxxActivity.class));
break;
}return true;
})
Q4:怎么添加尾布局
Answer:看上面的代码,只要在NavigationView里面,加入想要的尾布局内容就可以
Q5:怎么设置item中icon的颜色
1.app:itemBackground="@color/colorAccent"设置每一个item的背景颜色
2.app:itemTextColor=""设置item的背景颜色
3.代码中设置:navigationView.setItemIconTintList(null);
//显示icon本身的颜色
Q6:怎么设置item中icon的大小:
在dimens 文件中加入该属性:
48dp
原理:
查看NavigationView中的源码,最终发现在 NavigationMenuItemView这个类中实现时,是采用以下方式获取大小的:
public NavigationMenuItemView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mIconSize = context.getResources().getDimensionPixelSize(dimen.navigation_icon_size);
}
Finl:最后 欢迎各位补充。有问题欢迎批评
推荐阅读
- 《写作课》里深藏的那个浅显却不易懂的道理
- 伦敦即将迎来新地标(泰晤士河上飘浮的气泡造型议会大厦)
- 燕玲的Scalers|燕玲的Scalers Talk第五轮新概念朗读持续力训练Day7 20191024
- 后端|边车容器下的服务网格istio
- OpenCV|OpenCV Android Could not find SURF 图片匹配报错
- 学音乐的经历让我不畏惧任何困难
- 序列化继承HashMap的bean为Json()
- 高仿京东Android App,集成React-Native热更功能
- Linux查询NGINX运行目录|Linux查询NGINX运行目录,Linux下查看Nginx安装目录、版本号信息及当前运行的配置文件...
- 历史上的今天|【历史上的今天】7 月 16 日(磁盘驱动器之父诞生;VisiCalc 创造者出生;Slackware Linux 首次发布)