android - JetPack Compose 禁用 BottomSheet 外部触摸

标签 android android-jetpack android-jetpack-compose

我正在使用 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/

相关文章:

android - 如何在GridLayout中设置RecylerView项目装饰

java - 不同语言的 Assets

android - 在 Android 中强制键盘为英语

android - 全屏图库代码

android-jetpack - onItemAtEndLoaded 在 onZeroItemsLoaded 之后立即调用

android - Jetpack compose 如何等待动画结束

android - 如何根据加载图像的颜色绘制边框?

android - Jetpack Compose - 在自定义布局中获取点击位置

Android:如何检测 workmanager 已经处于排队模式多长时间?

android - 使用 TextRange 时,文本选择在基本 TextField 中不起作用