在jetpack撰写中禁用底部表单外部触摸



我在jetpack compose中使用了BottomSheet视图,但我想用BottomSheet锁定屏幕,直到我们点击底部列表的按钮并禁用底部列表中的外部触摸。我该怎么做呢?

我bottomSheet:


@ExperimentalMaterialApi
@Composable
fun BottomSheet(
modifier: Modifier = Modifier,
composable: @Composable () -> Unit,
scope: CoroutineScope
) {
val bottomSheetScaffoldState = rememberBottomSheetScaffoldState(
bottomSheetState = BottomSheetState(BottomSheetValue.Expanded)
)
BottomSheetScaffold(
scaffoldState = bottomSheetScaffoldState,
sheetContent = {
Column(
Modifier
.fillMaxWidth()
.height(200.dp)
.padding(8.dp),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(colors = ButtonDefaults.buttonColors(
backgroundColor = AppColor.brandColor.BLUE_DE_FRANCE,
contentColor = AppColor.neutralColor.DOCTOR
),
shape = RoundedCornerShape(
small
),
onClick = {
scope.launch {
bottomSheetScaffoldState.bottomSheetState.collapse()
}
}) {  
}
}
},
sheetPeekHeight = 0.dp,
sheetShape = RoundedCornerShape(topEnd = medium, topStart = medium)
) {
composable()
}
}

可组合函数是一个google地图屏幕

您可以使用sheetGesturesEnabled: Boolean = true/false属性,如果您想更改底部表单可取消或不可从外部取消

BottomSheetScaffold(
scaffoldState = bottomSheetScaffoldState,
sheetGesturesEnabled = false,
sheetContent = {
...
},
sheetPeekHeight = 0.dp,
sheetShape = RoundedCornerShape(topEnd = medium, topStart = medium)
) {
composable()
}

要获得正确的文档,请使用此链接:

您可以使用BottomSheetScaffoldsheetGesturesEnabled = false属性来禁用手势。如果你用remember {mutableStateOf(true)}的变量sheetgestresenabled设置它,你可以随心所欲地切换它。

var sheetGesturesEnabled by remember {mutableStateOf(true)}
BottomSheetScaffold(
scaffoldState = bottomSheetScaffoldState,
sheetGesturesEnabled = sheetGesturesEnabled,
sheetContent = {
},
drawerContent= {
}
)

最新更新