Android|Android NavigationView的使用详解以及各种问题解决方案

一:先看效果图
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:最后 欢迎各位补充。有问题欢迎批评

    推荐阅读