我正在使用 Accompanist's BottomSheetNavigator在 Compose 应用程序中显示 BottomSheet。要求是禁用底部工作表之外的触摸事件,并且仅对按钮单击事件执行操作。没有像 setCancelable(false)
这样的方法或 setCanceledOnTouchOutside(false)
在非 Compose 应用程序中使用。
例如。
在 this图像,只有当用户点击“立即应用”按钮时才应该采取行动,如果用户点击设备后退按钮或如果用户触摸底部表之外,则不应采取任何行动。有什么办法可以实现上述功能?
最佳答案
使用 ModalBottomSheetLayout
您可以指定 sheetState
范围。
在 ModalBottomSheetState
有参数 confirmStateChange
.
Optional callback invoked to confirm or veto a pending state change.
你可以使用类似的东西:
val state = rememberModalBottomSheetState(
initialValue= ModalBottomSheetValue.Hidden,
confirmStateChange = {false})
通过这种方式,您可以在不关闭底片的情况下触摸它的外部。在“立即应用”按钮中,只需使用:
onClick = { scope.launch { state.hide() } }
关于android - JetPack Compose 禁用 BottomSheet 外部触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68809132/