创建导航抽屉(侧滑菜单)

原文:https://developer.android.google.cn/training/material/design-library.html#CreateNavDraw

创建导航抽屉(侧滑菜单)

导航抽屉是一个用于显示应用的主菜单的UI面板,平时处于隐藏状态,通过在屏幕左侧边缘滑动手指或是触摸按钮可以让它显示出来。
创建导航抽屉(侧滑菜单)_第1张图片

一个导航抽屉的布局文件主要由三个资源文件组成:

  • 导航抽屉所处的Activity的布局文件(主布局)
  • 可选的标头布局文件
  • 菜单

在布局中添加导航抽屉

想要添加导航抽屉,首先要创建一个DrawerLayout作为布局的根视图。之后,在DrawerLayout中包含主布局以及作为导航抽屉的NavigationView。注意主布局必须放在NavigationView的前面,这是因为XML中的排放顺序会影响到视图的Z序,而导航抽屉必须要处在主布局的上方。主布局的宽高需要设置为match_parent,因为它代表的是整个UI的大小。
下面是一个示例,在DrawerLayout中包含了一个单独的主布局文件以及一个NavigationView:

.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/my_drawer_layout"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true">

    "@layout/my_main_content.xml"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    .support.design.widget.NavigationView
        android:id="@+id/my_navigation_view"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/my_drawer_header"
        app:menu="@menu/my_drawer_view"/>

.support.v4.widget.DrawerLayout>

创建标头

接下来创建一个布局文件作为导航抽屉的标头。下面的例子在LinearLayout中包含了一个TextView:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="192dp"
    android:background="?attr/colorPrimaryDark"
    android:padding="16dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:orientation="vertical"
    android:gravity="bottom">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="My header title"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>

LinearLayout>

你可以在布局中添加任意数量与类型的View。

创建菜单

下面是一个菜单资源的XML文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_item_1"
            android:icon="@drawable/ic_my_icon"
            android:title="My item 1" />
        <item
            android:id="@+id/nav_item_2"
            android:icon="@drawable/ic_my_icon"
            android:title="My item 2" />
    group>

    <item android:title="Sub items">
        <menu>
            <item
                android:id="@+id/nav_sub_1"
                android:icon="@drawable/ic_my_icon"
                android:title="My sub item 1" />
            <item
                android:id="@+id/nav_sub_2"
                android:icon="@drawable/ic_my_icon"
                android:title="My sub item 2" />
        menu>
    item>

menu>

如果为group添加id,则会出现分隔线。

实现OnNavigationItemSelectedListener

最后,为NavigationView设置OnNavigationItemSelectedListener来响应菜单项单击事件。监听器中包含一个onNavigationItemSelected (MenuItem item)方法,参数item代表被单击的菜单项。

你可能感兴趣的:(Android,UI)