现在项目一直在用底部弹出框,之前一直用的是系统的dialog,然后设置成底部的属性,但是动画什么的不是很好,所以用了BottomSheetDialog这个系统的控件,但是坑比较多,这里记录一下。
第一个问题嵌套NestedScrollView+RecyclerView,导致内部无法上下滑动:其实这个就是没办法设置全屏导致的,
//拿到系统的 bottom_sheet View view = sheetDialog.findViewById(R.id.design_bottom_sheet); //设置view高度 view.getLayoutParams().height = getResources().getDisplayMetrics().heightPixels - 200; //获取behavior BottomSheetBehavior<View> behavior = BottomSheetBehavior.from(view); //设置弹出高度 //behavior.setPeekHeight(500); //设置展开状态 behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
//设置view高度 view.getLayoutParams().height = getResources().getDisplayMetrics().heightPixels - 200;这句话就是设置这个dialog全屏弹出,至于高度多少,你们可以自己设置
第二个问题:圆角设置
这个空间直接在xml里面设置背景是不行的,因为是系统空间,必须设置style才行
<!--实现BottomSheetDialog圆角效果--> <style name="BottomSheetDialog" parent="Theme.Design.Light.BottomSheetDialog"> <item name="bottomSheetStyle">@style/bottomSheetStyleWrapper</item> </style> <style name="bottomSheetStyleWrapper" parent="Widget.Design.BottomSheet.Modal"> <item name="android:background">@drawable/shape_top_10_white</item> </style>
然后直接在构造方法传进去就行了