Android Design Support Library 给开发者带来了一些重要的 Material Design 组件,并且向下兼容到 Android 2.1, Navigation View 就是其中之一,可用于方便地创建导航抽屉。
实现步骤如下:
布局文件中加入以下代码:
<android.support.v4.widget.DrawerLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/drawer_layout"android:layout_width="match_parent"android:layout_height="match_parent"><!-- 需要呈现的内容 --><android.support.design.widget.NavigationViewandroid:id="@+id/nav_view"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_gravity="start"app:menu="@menu/drawer"/></android.support.v4.widget.DrawerLayout>
app:menu 用于指定导航抽屉的菜单项,具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><group android:checkableBehavior="single"><itemandroid:id="@+id/nav_home"android:icon="@drawable/ic_dashboard"android:title="Home" /><itemandroid:id="@+id/nav_messages"android:icon="@drawable/ic_event"android:title="Messages" /><itemandroid:id="@+id/nav_friends"android:icon="@drawable/ic_headset"android:title="Friends" /><itemandroid:id="@+id/nav_discussion"android:icon="@drawable/ic_forum"android:title="Discussion" /></group><item android:title="Sub items"><menu><itemandroid:icon="@drawable/ic_dashboard"android:title="Sub item 1" /><itemandroid:icon="@drawable/ic_forum"android:title="Sub item 2" /><itemandroid:icon="@drawable/ic_forum"android:title="Sub item 2" /></menu></item>
</menu>
app:headerLayout 用于指定一个任意的布局,作为导航抽屉的顶部,如效果图中的紫色带 Username 字样部分。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="150dp"android:background="@color/titleBlue">
<ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/userpic"android:layout_centerInParent="true"android:id="@+id/Iamge_mine_head"/>
</RelativeLayout>
java 部分代码
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);headerLayout = navigationView.inflateHeaderView(R.layout.drawer_header);head = (ImageView) headerLayout.findViewById(R.id.Iamge_mine_head);head.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(MainActivity.this,"会员登录",Toast.LENGTH_LONG).show();}});if (navigationView != null) {navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {@Overridepublic boolean onNavigationItemSelected(MenuItem menuItem) {//切换相应 Fragment 等操作menuItem.setChecked(true);mDrawerLayout.closeDrawers();if(menuItem.toString().equals("Home")){Toast.makeText(MainActivity.this,menuItem.toString(),Toast.LENGTH_LONG).show();}return false;}});}
下载地址