一、前言
在开发中,我们最常使用DrawerLayout + NavigationView 实现侧滑菜单,而NavigationView用来实现侧滑导航的布局。
二、实现方式
2.1 基础用法
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
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/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>
- 外层是DrawerLayout,第一个子view是内容区,侧滑内容紧跟其后。
- 侧滑内容可以有好几个
2.2 NavitationView常用属性
属性 | 详细解释 |
---|---|
android:layout_gravity | 设置侧滑从那边滑出 |
app:headerLayout | 设置头布局文件 |
app:menu | 设置menu项目 |
如下图所示,NavigationView分为两部分,headerView 和 menu:
headview:就是普通的布局。
<?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="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="40dp"
android:src="@mipmap/ic_launcher_round