此安卓支持库中需要讲解的第二个View就是NavigationView,相信大家在开发中经常会用到抽屉,那么谷歌也为大家提供了这个功能,并不需要去Github去下载使用开源的软件。NavigationView基本满足日常开发抽屉的所有要求,且效率也高。下面我们看下效果图后,将详细介绍其使用方式。
1.NavigationView与DrawerLayout的天作之合
NavigationView完整包名+类名如下:android.support.design.widget.NavigationView
而DrawerLayout完整包名+类名如:android.support.v4.widget.DrawerLayout
其两者搭配起来的XML布局文件如下:
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:id="@+id/drawerlayout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" android:fitsSystemWindows="true"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"/> </android.support.design.widget.AppBarLayout> <LinearLayout android:id="@+id/linearlayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"/> </LinearLayout> <android.support.design.widget.NavigationView android:id="@+id/navigation" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" app:headerLayout="@layout/drawer_header" app:menu="@menu/drawer_menu"/> </android.support.v4.widget.DrawerLayout>
属性解释如下:
①android:fitsSystemWindows="true":此属性在标题栏与抽屉中都设置了,保证系统状态栏与抽屉和标题一体化,因为我的测试手机是小米IS,Andorid 4.1的系统,该功能在5.0以上的手机才能显示其效果,故此测试图没有效果。
②app:headerLayout="@layout/drawer_header"也就是下图的区域:
这里在一般APP中都放的头像,我们这里只是做介绍,只要要drawer_header写你的任意布局,那么在此区域就会显示你所需要的界面。
③app:menu="@menu/drawer_menu":也就是下图所示区域:
也就是抽屉中的各种菜单选项。
2.实现抽屉中的菜单选项
在res/menu文件下新建drawer_menu.xml文件,写入如下代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="single"> <item android:id="@+id/lyj_menu_datou" android:icon="@drawable/blog_tag_parent_expert" android:checked="true" android:title="我是大头"/> <item android:id="@+id/lyj_menu_xiaotou" android:icon="@drawable/blog_tag_parent_honorary_expert" android:title="我是小头"/> <item android:id="@+id/lyj_menu_chilun" android:icon="@drawable/blog_tag_parent_system_maintenance" android:title="我是齿轮"/> </group> <item android:title="其他"> <menu> <item android:icon="@drawable/blog_tag_parent_cloud_computing" android:title="我是云盘"/> <item android:icon="@drawable/blog_tag_parent_comprehensive" android:title="我是标签"/> </menu> </item> </menu>
属性解释如下:
①android:checkableBehavior="single":代表group所有菜单中,只能一次选择一个。
②android:checked="true":默认选中菜单项,此处为“我是大头”
③<item android:title="其他">:通过子菜单的形式,可以显示分割线与子标题