Material Design(四)--NavigationView

导航抽屉能够成为应用内标识和导航的非常重要的焦点,设计的一致性也对于应用的导航是多么地容易产生了重要的影响,尤其是对于小白用户。NavigationView通过提供一种框架,使得这种想法更加容易实现。而这个框架则满足了你对于导航抽屉和通过menu资源填充导航item的能力的需要。

你可以像这样在布局文件中把NavigationView作为DrawerLayout的抽屉内容视图:

1 <android.support.v4.widget.DrawerLayout
 2         xmlns:android='http://schemas.android.com/apk/res/android'
 3         xmlns:app='http://schemas.android.com/apk/res-auto'
 4         android:layout_width='match_parent'
 5         android:layout_height='match_parent'
 6         android:fitsSystemWindows='true'>
 7     <!-- your content layout -->
 8     <android.support.design.widget.NavigationView
 9             android:layout_width='wrap_content'
10             android:layout_height='match_parent'
11             android:layout_gravity='start'
12             app:headerLayout='@layout/drawer_header'
13             app:menu='@menu/drawer'/>
14 </android.support.v4.widget.DrawerLayout>

你可能会注意到NavigationView的两个属性:app:headerLayout控制用于header的可选布局。app:menu是用于填充导航项的菜单资源,同时也可以在运行时更新导航项内容。NavigationView为你提供状态栏的纱布保护,以确保NavigationView与状态栏在API 21+的设备上准确地进行交互。

最简单的抽屉菜单是一系列checkable菜单项的集合:

 1 <group android:checkableBehavior='single'>
 2     <item
 3         android:id='@+id/navigation_item_1'
 4         android:checked='true'
 5         android:icon='@drawable/ic_android'
 6         android:title='@string/navigation_item_1'/>
 7     <item
 8         android:id='@+id/navigation_item_2'
 9         android:icon='@drawable/ic_android'
10         android:title='@string/navigation_item_2'/>
11 </group>

checked项将会在导航抽屉里面高亮显示,以确保用户知道哪个导航项在当前情况下是选中的。

你也可以在menu中使用subheader来分割导航项群组:

 1 <item
 2     android:id='@+id/navigation_subheader'
 3     android:title='@string/navigation_subheader'>
 4     <menu>
 5         <item
 6             android:id='@+id/navigation_sub_item_1'
 7             android:icon='@drawable/ic_android'
 8             android:title='@string/navigation_sub_item_1'/>
 9         <item
10             android:id='@+id/navigation_sub_item_2'
11             android:icon='@drawable/ic_android'
12             android:title='@string/navigation_sub_item_2'/>
13     </menu>
14 </item>

你可以通过使用setNavigationItemSelectedListener()方法设置OnNavigationItemSelectedListener来获取已选中项的回调。它向你提供了被点击的MenuItem,以允许你处理选中事件,改变被选中状态,加载新的内容,通过代码关闭抽屉,或者任何你想要的事件。

 

posted @ 2016-05-15 10:35  goodpan  阅读(174)  评论(0编辑  收藏  举报