Reputation: 96
I have a BottomSheetDialogFragment like this:
class MyFragment : BottomSheetDialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = BottomSheetDialog(requireContext(), theme)
dialog.setOnShowListener {
val bottomSheetDialog = it as BottomSheetDialog
val parentLayout =
bottomSheetDialog.findViewById<View>(com.google.android.material.R.id.design_bottom_sheet)
parentLayout?.let { view ->
val behaviour = BottomSheetBehavior.from(view)
setupFullHeight(view)
behaviour.state = BottomSheetBehavior.STATE_EXPANDED
behaviour.skipCollapsed = true
}
}
return dialog
}
private fun setupFullHeight(bottomSheet: View) {
val layoutParams = bottomSheet.layoutParams
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT
bottomSheet.layoutParams = layoutParams
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return ComposeView(requireContext()).apply {
setContent {
AppTheme {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
Scaffold(
modifier = Modifier
.fillMaxSize()
.nestedScroll(rememberNestedScrollInteropConnection())
) {
LazyColumn(
modifier = Modifier
.fillMaxSize()
.padding(it)
) {
// here some items
}
}
}
}
}
}
}
What should I do so that the edges of the full screen dialog can be rounded? I've seen solutions for Android and XML, but they didn't work for me.
When I give .clip(RoundedCornerShape(topStart = 10.dp, topEnd = 10.dp))
to Scaffold, a background non-transparency problem occurs.
Upvotes: 3
Views: 620
Reputation: 141
You need to use
ModalBottomSheetLayout(
sheetState = modalBottomSheetState,
sheetShape = RoundedCornerShape(topStart = 10.dp, topEnd = 10.dp),
....)
Upvotes: 0