导航菜单控件。原文地址:这里

NavigationView - 图1 NavigationView - 图2

左图为导航菜单占一整个页面,右图导航菜单放在侧边抽屉里,都是比较常见的。

一、写一个

如上左图,来写一个。

1. 布局文件中添加控件

在 layout/activity_main.xml 中添加 NavigationView 控件。其中有两个属性要注意:

  • app:headerLayout:导航菜单头部部分;

  • app:menu:导航菜单下面菜单选项。

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:app="http://schemas.android.com/apk/res-auto"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent">
  5. <android.support.design.widget.NavigationView
  6. android:id="@+id/navigation_view"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent"
  9. android:layout_gravity="start"
  10. app:headerLayout="@layout/navigation_header"
  11. app:menu="@menu/navigation_menu"/>
  12. </LinearLayout>

2. 创建头部部分

创建 layout/navigation_header.xml 文件。

  1. <LinearLayout android:layout_width="match_parent"
  2. android:layout_height="100dp"
  3. android:background="#dddddd"
  4. xmlns:android="http://schemas.android.com/apk/res/android">
  5. <ImageView android:src="@mipmap/ic_launcher"
  6. android:layout_gravity="center"
  7. android:layout_marginHorizontal="20dp"
  8. android:layout_height="wrap_content"
  9. android:layout_width="wrap_content"/>
  10. <TextView android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:layout_gravity="center"
  13. android:textSize="24sp"
  14. android:text="Android"/>
  15. </LinearLayout>

3. 创建菜单部分

创建 menu/navigation_menu 文件。

  1. <menu xmlns:android="http://schemas.android.com/apk/res/android">
  2. <group android:checkableBehavior="single">
  3. <item
  4. android:id="@+id/item_dync"
  5. android:title="了解会员特权" />
  6. <item
  7. android:id="@+id/item_explore"
  8. android:title="QQ钱包" />
  9. <item
  10. android:id="@+id/item_message"
  11. android:title="个性装扮" />
  12. <item
  13. android:id="@+id/item_person"
  14. android:title="我的收藏" />
  15. </group>
  16. <item android:title="其他">
  17. <menu>
  18. <item
  19. android:id="@+id/subitem_01"
  20. android:icon="@mipmap/ic_launcher"
  21. android:title="设置" />
  22. <item
  23. android:id="@+id/subitem_02"
  24. android:icon="@mipmap/ic_launcher"
  25. android:title="夜间" />
  26. </menu>
  27. </item>
  28. </menu>

4. 菜单添加点击事件

  1. NavigationView navigationView = findViewById(R.id.navigation_view);
  2. navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
  3. @Override
  4. public boolean onNavigationItemSelected(MenuItem item) {
  5. int itemId = item.getItemId();
  6. switch (itemId) {
  7. case R.id.item_dync:
  8. break;
  9. case R.id.item_explore:
  10. break;
  11. //......
  12. }
  13. return true;
  14. }
  15. });