思路
侧滑页的实现就比较简单了,将布局app:menu
替换为内部Layout:
1 2
| app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer"
|
to
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <androidx.drawerlayout.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:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" tools:openDrawer="start">
<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" >
</androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.navigation.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true">
<include android:id="@+id/nav_layout" layout="@layout/nav_layout" /> </com.google.android.material.navigation.NavigationView> </androidx.drawerlayout.widget.DrawerLayout>
|
修改完后发现测滑的宽度不够,可以通过代码来修改宽度
1 2 3
| val params: ViewGroup.LayoutParams = binding.navView.layoutParams params.width = resources.displayMetrics.widthPixels * 5 / 6 binding.navView.layoutParams = params
|
修正完后就能达到我们想要的展开比例,有一点不好就是写布局的时候,预览还是以全屏的方式显示
再就是这里实现的登录动作也是用BottomSheetDialogFragment
实现的,需要设置Style为TransBottomSheetDialogStyle
,因为背景的圆角显示需要将Style改为透明
预览
参考:
https://www.jianshu.com/p/7fcec871ea36