导航抽屉能够成为应用内标识和导航的非常重要的焦点,设计的一致性也对于应用的导航是多么地容易产生了重要的影响,尤其是对于小白用户。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,以允许你处理选中事件,改变被选中状态,加载新的内容,通过代码关闭抽屉,或者任何你想要的事件。
时间: 2024-11-10 22:05:29