侧拉栏结构比较简单,直接上效果图和代码。
![drawer-main.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fb9893c656ac45bdb7f5ec11d1d53852~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image
![drawer-open.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4ef91f00c3204076860afe22d813efae~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image
```Kotlin
override fun initListener() {
initDrawerLayoutListener()
}
override fun onBackPressed() {
if (mBinding.mainDrawer.isOpen) {
// 先关闭侧拉栏
mBinding.mainDrawer.closeDrawer(GravityCompat.START)
return
}
super.onBackPressed()
}
private fun initDrawerLayoutListener() {
mBinding.ivDrawerMenu.setOnClickListener {
// 打开侧拉栏
mBinding.mainDrawer.openDrawer(GravityCompat.START)
}
// 防止侧拉栏产生点击透传
mBinding.clDrawer.rootView.isClickable = false
// 添加侧拉栏状态监听
mBinding.mainDrawer.addDrawerListener(object : DrawerLayout.DrawerListener {
override fun onDrawerSlide(drawerView: View, slideOffset: Float) {
}
override fun onDrawerOpened(drawerView: View) {
// 打开侧拉栏:首页广告隐藏、
}
override fun onDrawerClosed(drawerView: View) {
// 关闭侧拉栏:首页广告隐藏、
}
override fun onDrawerStateChanged(newState: Int) {
}
})
}
```
```XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/ivDrawerMenu"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:background="@drawable/ic_launcher_background"
android:src="@drawable/ic_launcher_foreground"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/main"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clDrawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/white"
android:clickable="true"
android:focusable="true"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/drawer"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.drawerlayout.widget.DrawerLayout>
```