【问题标题】:Jetpack Compose collapse Bottom Sheet on outside clickJetpack Compose 在外部单击时折叠底部表
【发布时间】:2022-01-11 20:32:41
【问题描述】:

我目前通过BottomSheetScaffold 显示底部工作表,并希望在用户单击底部工作表外部时折叠它。有没有办法检测底部工作表之外的点击?

这是我BottomSheetScaffold的屏幕:

@ExperimentalMaterialApi
@ExperimentalMaterial3Api
@Composable
fun HomeScreen() {
    val bottomSheetScaffoldState = rememberBottomSheetScaffoldState(
        bottomSheetState = BottomSheetState(BottomSheetValue.Collapsed)
    )
    val coroutineScope = rememberCoroutineScope()

    BottomSheetScaffold(
        scaffoldState = bottomSheetScaffoldState,
        sheetContent = {
            Box(
                Modifier
                    .fillMaxWidth()
                    .fillMaxHeight(0.9f)
            ) {
                Text("Hello from Sheet")
            }
        },
        sheetShape = RoundedCornerShape(
            topStart = Spacing.l,
            topEnd = Spacing.l
        ),
        sheetPeekHeight = LocalConfiguration.current.screenHeightDp.dp * 0.15f,
        sheetBackgroundColor = MaterialTheme.colorScheme.surface,
    ) {
        Scaffold() {
            Button(
                onClick = {
                    coroutineScope.launch {
                        if (bottomSheetScaffoldState.bottomSheetState.isCollapsed) {
                            bottomSheetScaffoldState.bottomSheetState.expand()
                        } else {
                            bottomSheetScaffoldState.bottomSheetState.collapse()
                        }
                    }
                },
            ) {
                Text("Toggle Sheet")
            }
        }

    }
}

这是我想要在底部工作表展开时检测点击的区域的可视化。

【问题讨论】:

    标签: android kotlin android-jetpack-compose bottom-sheet android-jetpack-compose-scaffold


    【解决方案1】:

    您可以将带有detectTapGesturespointerInput 修饰符添加到您的Scaffold

       Scaffold( modifier =
            Modifier.pointerInput(Unit) {
                detectTapGestures(onTap = {
                    coroutineScope.launch {
                        if (bottomSheetScaffoldState.bottomSheetState.isCollapsed) {
                            bottomSheetScaffoldState.bottomSheetState.expand()
                        } else {
                            bottomSheetScaffoldState.bottomSheetState.collapse()
                        }
                    }
                })
        }){
           //.....
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-06
      • 2020-02-29
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 1970-01-01
      • 2021-11-07
      相关资源
      最近更新 更多