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

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

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

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

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

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

在布局中添加导航抽屉

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

<android.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">

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

    <android.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"/>

</android.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代表被单击的菜单项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值