在android studio中使用,导包
<pre style="font-family: Consolas; font-size: 12pt; background-color: rgb(255, 255, 255);"><span style="color: rgb(0, 128, 0); "><strong></strong></span><pre name="code" class="html">compile 'com.android.support:design:23.2.0'
compile 'com.android.support:appcompat-v7:23.1.0'
导包就不解释了
在23.0.1之前,使用android.support.design.widget.NavigationView是这样的姿势
<android.support.design.widget.NavigationView
android:id="@+id/vNavigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/transparent"
app:headerLayout="@layout/view_global_menu_header"
app:itemIconTint="#8b8b8b"
app:itemTextColor="#666666"
app:menu="@menu/drawer_menu"/>
在布局文件中通过自定义属性,直接指定menu的头部布局,但是在23.1之后就失效了,大概翻看源代码,menu解析到的list由listview变成了recycleview,可能是recycleview就包含了addHeader类型的方法 简单粗暴的mark下怎么用:
去掉布局文件中的
app:headerLayout="@layout/view_global_menu_header"
在MenuFragment中
nav = (NavigationView) view.findViewById(R.id.vNavigation); View headerView = nav.inflateHeaderView(R.layout.view_global_menu_header); if (headerView.getParent()!=null){ ViewGroup parent = (ViewGroup) headerView.getParent(); if (parent != null) { parent.removeView(headerView); } } nav.addHeaderView(headerView);
如果要获取headerView中的控件,需要headerView.findviewbyid(),谨记