【Android - MD】之NavigationView的使用

来源:互联网 发布:社交网络的利弊 英文 编辑:程序博客网 时间:2024/05/20 09:46

NavigationView是Android 5.0新特性——Material Design中的一个布局控件,可以结合DrawerLayout使用,让侧滑菜单变得更加美观(可以添加头部布局)。

NavigationView需要嵌套在DrawerLayout内部,其相对于单独使用DrawerLayout的优点在于可以额外添加一个HeaderView头部布局。另外,NavigationView中的其他选项都是用menu的形式来编写的,menu中的分支也可以在NavigationView中形成分栏效果。


和其他MD控件一样,使用NavigationView需要在gradle文件中注册依赖:

    compile 'com.android.support:design:24.1.1'

1、NavigationView的属性:

            app:headerLayout:NavigationView的头部布局,其中可以存放ImageView、TextView等控件            app:menu:NavigationView中的Item项,存在menu中

2、布局示例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#FFFFFFFF"    android:orientation="vertical">    <android.support.v7.widget.Toolbar        android:id="@+id/toolbar"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="@color/colorPrimary"        android:minHeight="?attr/actionBarSize" />    <android.support.v4.widget.DrawerLayout        android:id="@+id/drawer"        android:layout_width="match_parent"        android:layout_height="match_parent">        <!-- 主界面布局 -->        <FrameLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:background="#DDDDDD" />        <android.support.design.widget.NavigationView            android:id="@+id/navigationview"            android:layout_width="256.0dip"            android:layout_height="match_parent"            android:layout_gravity="left"            android:background="@color/colorPrimary"            android:fitsSystemWindows="true"            app:headerLayout="@layout/sideworks_navhead"            app:menu="@menu/navigate" />    </android.support.v4.widget.DrawerLayout></LinearLayout>
menu文件中的代码如下:

<menu xmlns:android="http://schemas.android.com/apk/res/android">    <group>        <item            android:id="@+id/one_one"            android:icon="@mipmap/ic_launcher"            android:title="Group one Item one" />        <item            android:id="@+id/one_two"            android:icon="@mipmap/ic_launcher"            android:title="Group one Item two" />        <item            android:id="@+id/one_three"            android:icon="@mipmap/ic_launcher"            android:title="Group one Item three" />    </group>    <item android:title="Group Two">        <menu>            <item                android:id="@+id/two_one"                android:icon="@mipmap/ic_launcher"                android:title="Group one Item one" />            <item                android:id="@+id/two_two"                android:icon="@mipmap/ic_launcher"                android:title="Group one Item two" />        </menu>    </item></menu>
头部布局中的代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#00000000"    android:gravity="center_horizontal"    android:orientation="vertical">    <ImageView        android:id="@+id/header_image"        android:layout_width="150.0dip"        android:layout_height="150.0dip"        android:layout_marginTop="20.0dip"        android:contentDescription="@string/app_name"        android:src="@mipmap/ic_launcher" />    <TextView        android:id="@+id/header_title"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginBottom="20.0dip"        android:layout_marginTop="10.0dip"        android:text="Navigation View"        android:textColor="#FFFFFFFF"        android:textSize="18.0sp"        android:textStyle="bold" /></LinearLayout>

3、弹出抽屉:

在JAVA代码中通过点击Toolbar中的ActionBarDrawerToggle来弹出抽屉。代码如下:

        // 绑定Toolbar到Activity中        setSupportActionBar(toolbar);        // 在Toolbar上设置一个按钮,点击这个按钮可以拉出抽屉        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(MainActivity.this, drawer, toolbar, R.string.drawer_open, R.string.drawer_close);        toggle.syncState();        drawer.addDrawerListener(toggle);
最终的演示效果如下图:


以上就是对NavigationView的简单用法的介绍,下面贴出码云上的源码,供大家参考。

DEMO地址

0 0
原创粉丝点击