自己使用BottomSheetDialogFragment时,想实现上方圆角。
布局设置了圆角的背景后,需要给dialog的北京设置为透明,才能有圆角的效果,网上其他的文章都是这么实现的:
dialog.getWindow().findViewById(R.id.design_bottom_sheet).setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
但是我使用时找不到R.id.design_bottom_sheet对应的view
于是采用了修改style的方法.
style代码
<style name="AppBottomSheet" parent="Theme.MaterialComponents.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/AppBottomSheetStyle</item>
</style>
<style name="AppBottomSheetStyle" parent="Widget.MaterialComponents.BottomSheet.Modal">
<item name="backgroundTint">@color/colorTrans</item>
</style>
重写BottomSheetDialogFragment时,在onCreate中设置属性即可实现圆角
/*
setStyle方法的注释: Calling this after the fragment's Dialog iscreated will have no effect.
要在dialog创建出来之前设置好style
*/
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NORMAL,R.style.AppBottomSheet)
}
实现效果: