侧滑菜单功能使用的是DrawerLayout + NavigationView的功能实现具体实现方式如下:
修改activity_main.xml的代码如下:
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:layout_width="match_parent"
android:laytou_heigth="matcht_parent">
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
android:layout_width="match_parent"
android:layout_height="match_parent"
layout_gravity="start"
android:text="This is menu"
android:textSize="30sp"
android:background="#FFF"/
现在修改MainActivity的代码如下:
public class MainActivity extends AppCompatActivity { private DrawerLayout mDrawerLayout;
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBar actionBar = getSupportActionBar(); if (actionBar != null){ //将菜单按钮添加进去 actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeAsUpIndicator(R.drawable.ic_dns_black_24dp); }
public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.home: mDrawerLayout.openDrawer(GravityCompat.START); break;//在这个方法中添加一个新的图标功能
现在运行一下代码可以得到简单的侧滑菜单
要使用NavigationView的功能要导入开源库Design Support库具体如下:
compile 'com.android.support:design:26+' compile 'de.hdodenhof:circleimageview:2.1.0'
然后创建相应的nav_menu.xml文件代码如下:
xml version="1.0" encoding="utf-8"?>
再创建一个nav_header.xml的文件用于存放圆形头像框的控件具体代码如下:
xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="180dp"
android:padding="10dp"
android:background="?attr/colorPrimary">
android:layout_width="70dp"
android:layout_height="70dp"
android:id="@+id/icon_image"
android:src="@mipmap/ic_launcher"
android:layout_centerInParent="true"/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username"
android:layout_alignParentBottom="true"
android:text="[email protected]"
android:textSize="14sp"/>
android:id="@+id/mail"
android:layout_above="@id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tony Green"
android:textColor="#fff"
android:textSize="14sp"/>
现在在activity_main.xml的文件中导入需要的两个布局文件代码如下:
android:id="@+id/nav_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/nav_menu"
app:headerLayout="@layout/nav_header"
/>
这个布局放在DrawerLayout的布局下
然后修改MainActivity的代码如下:
public class MainActivity extends AppCompatActivity { private DrawerLayout mDrawerLayout;
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavigationView navView = (NavigationView) findViewById(R.id.nav_view); //初始化控件
ActionBar actionBar = getSupportActionBar(); if (actionBar != null){ //将菜单按钮添加进去 actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeAsUpIndicator(R.drawable.ic_dns_black_24dp); }
navView.setCheckedItem(R.id.nav_call); navView.setNavigationItemSelectedListener(new NavigationView .OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem item) { mDrawerLayout.closeDrawers();
return true;
//在这个方法中添加一个新的图标功能
public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.home: mDrawerLayout.openDrawer(GravityCompat.START); break;