NavigationView是谷歌在侧滑的MaterialDesign的一种规范,所以提出了一个新的控件,用来规范侧滑的基本样式。
首先准备两个xml布局;
第一个布局是侧滑出来的菜单布局
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_gallery" android:title="相册" android:orderInCategory="10" android:icon="@android:drawable/ic_menu_gallery" /> <item android:id="@+id/action_details" android:title="详情" android:orderInCategory="2" android:icon="@android:drawable/ic_menu_info_details" /> <item android:id="@+id/action_about" android:title="关于" android:orderInCategory="100" android:icon="@android:drawable/ic_menu_help"> <menu > <item android:id="@+id/aaa" android:title="111" android:icon="@android:drawable/ic_media_play"/> <item android:id="@+id/bbb" android:title="222" android:icon="@android:drawable/ic_media_pause"/> </menu> </item> <item android:id="@+id/action_music" android:title="音樂" android:orderInCategory="100" android:icon="@android:drawable/ic_menu_more" > <menu > <item android:id="@+id/action_play" android:title="播放" android:icon="@android:drawable/ic_media_play"/> <item android:id="@+id/action_pause" android:title="暫停" android:icon="@android:drawable/ic_media_pause"/> </menu> </item> </menu>第二个是侧滑菜单的头部布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon_people" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="666" android:textSize="10dp" /> </LinearLayout>第二个布局不是必须,根据产品需求修改。
然后在Activity对应的布局文件中引用NavigationView
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#0f0" tools:context="com.example.hp.md.NavigationView_Activity"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary"></android.support.v7.widget.Toolbar> <android.support.v4.widget.DrawerLayout xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawerLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/toolbar" tools:context="com.example.hp.md.NavigationView_Activity"> <!--内容界面--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面这是内容界面" /> </LinearLayout> <!-- 侧滑菜单部分 --> <android.support.design.widget.NavigationView android:id="@+id/my_navigation" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/navigation_headerlayout" app:menu="@menu/navigation_menu"></android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> </RelativeLayout>
app:menu="@menu/navigation_menu"引用的是上面准备的第一个布局
app:headerLayout="@layout/navigation_headerlayout"引用的是上面准备的第二个布局