Android Design Support Library 给开发者带来了一些重要的 Material Design 组件,并且向下兼容到 Android 2.1, Navigation View 就是其中之一,可用于方便地创建导航抽屉。
实现步骤如下:
布局文件中加入以下代码:
<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/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 需要呈现的内容 --> <android.support.design.widget.NavigationView android: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"> <item android:id="@+id/nav_home" android:icon="@drawable/ic_dashboard" android:title="Home" /> <item android:id="@+id/nav_messages" android:icon="@drawable/ic_event" android:title="Messages" /> <item android:id="@+id/nav_friends" android:icon="@drawable/ic_headset" android:title="Friends" /> <item android:id="@+id/nav_discussion" android:icon="@drawable/ic_forum" android:title="Discussion" /> </group> <item android:title="Sub items"> <menu> <item android:icon="@drawable/ic_dashboard" android:title="Sub item 1" /> <item android:icon="@drawable/ic_forum" android:title="Sub item 2" /> <item android: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" > <ImageView android: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() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this,"会员登录",Toast.LENGTH_LONG).show(); } }); if (navigationView != null) { navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public 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; } }); }
下载地址
