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

一:先看效果图

Android NavigationView的使用详解以及各种问题解决方案_第1张图片

这个效果图分为三部分:头布局 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中间加一条分割线

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:最后 欢迎各位补充。有问题欢迎批评

你可能感兴趣的:(Android NavigationView的使用详解以及各种问题解决方案)