先上效果图,是你想要的就继续往下看吧
一、首先添加依赖如下所示
二、之后编写主布局xml文件代码如下
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout"
tools:context=".MainActivity">
<!--主视图-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:elevation="0dp"
android:theme="@style/AppTheme.PopupOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/mToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay" />
</android.support.design.widget.AppBarLayout>
<!--主内容-->
<LinearLayout
android:id="@+id/main_content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"/>
</LinearLayout>
<!--侧边栏-->
<!--headerLayout:加载侧标栏头部布局-->
<!--menu:加载侧标栏菜单布局-->
<android.support.design.widget.NavigationView
android:id="@+id/nav"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="left"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_home"
app:menu="@menu/new_menu"/>
</android.support.v4.widget.DrawerLayout>
三、编写侧滑栏头部布局和菜单布局如下
头部布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="180dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorPrimaryDark"
android:gravity="center"
android:orientation="vertical"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:gravity="center"
android:layout_height="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/iv_avatar"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/login_log"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:text="Android Studio"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>
</LinearLayout>
</LinearLayout>
菜单布局
<?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/voice_switch"
android:icon="@mipmap/girl"
android:title="美女相册" />
<item
android:id="@+id/version"
android:icon="@mipmap/version"
android:title="版本检测" />
<item
android:id="@+id/location"
android:icon="@mipmap/location"
android:title="我的位置" />
</group>
<group android:checkableBehavior="single">
<item
android:id="@+id/scan"
android:title="扫一扫"
android:icon="@mipmap/scan"/>
<item
android:id="@+id/code"
android:title="二维码分享"
android:icon="@mipmap/code"/>
<item
android:id="@+id/about"
android:icon="@mipmap/about"
android:title="关于软件" />
</group>
</menu>
四、设置toolbar主题和顶部主题
五、万事俱备,开始编写逻辑代码
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
//drawerLayout
private DrawerLayout drawerLayout;
//侧滑菜单栏
private NavigationView navigationView;
private Toolbar mtoolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
public void initView() {
mtoolbar =findViewById(R.id.mToolbar);
setSupportActionBar(mtoolbar);
//侧滑相关
drawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.nav);
navigationView.setNavigationItemSelectedListener(this);
//切换菜单,注意第三个和第四个参数,需要在string里面声明,注意把toolbar参数放进去不然就没有切换的那个按钮
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,
drawerLayout, mtoolbar,
R.string.openDrawerContentDescRes,
R.string.closeDrawerContentDescRes);
//切换菜单的动画
drawerLayout.addDrawerListener(toggle);
//同步状态
toggle.syncState();
//开启手势滑动打开侧滑菜单栏,如果要关闭将后面的UNLOCKED替换成LOCKED_CLOSED就可以了
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}
//在这可以写你想要的点击事件
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.voice_switch:
break;
case R.id.version:
break;
case R.id.location:
break;
case R.id.about:
break;
case R.id.scan:
break;
case R.id.code:
break;
}
return true;
}
}