当前位置: 首页 > 知识库问答 >
问题:

禁用喷气背包组合中的底页外部触摸

庄飞
2023-03-14

我在jetpack撰写中使用了BottomSheet视图,但我想使用BotomSheet锁定屏幕,直到我们单击BotomShets的按钮并在BotomSheet中禁用外部触摸。我怎么做?

我的底单:


@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()
    }

}

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

共有2个答案

宁弘亮
2023-03-14

您可以使用 sheetGesturesEnabled = BottomSheetScaffold 的 false 属性来禁用手势。如果你用一个 var sheetGesturesEnabled by remember {mutableStateOf(true)} 来设置它,你可以随心所欲地切换它。

var sheetGesturesEnabled by remember {mutableStateOf(true)}
BottomSheetScaffold(
    scaffoldState = bottomSheetScaffoldState,
    sheetGesturesEnabled = sheetGesturesEnabled,
    sheetContent = {
    },
    drawerContent= {
    }
)
万俟招
2023-03-14

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

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

要获得正确的文档,请使用此链接:底层脚手架

 类似资料:
  • 我在jetpack compose中确实有一个要求,即我的脚手架中需要一个底部杆,也需要一个高度可调的底部板。我只能实现其中的任何一个。我不得不用下面的代码牺牲底部的条: 我没有选择在这里使用底部栏,而我可以自由调整纸张的高度。第二种解决方案是使用ModalBottomSheetLayout,我可以在其中添加脚手架并添加底部栏,但无法调整板材的高度。

  • 以下是 BottomNav 实现的概述。该应用程序正确显示底部导航栏,但当选择某个项目时,它会多次调用NavHost。我看到Jetpack撰写样本 https://github.com/android/compose-samples/tree/main/Jetsnack 一个类似的问题。是否有任何解决方法可以避免多次Navhost调用?

  • 可以在Jetpack Compose中进行权重吗?例如,我想以这样一种方式设置它,即一个项目被加权为布局的1/3,而另一个占剩余的2/3。 在XML/ViewGroup样式中,可以使用LinearLayouts和ConstraintLayouts来实现这一点。然而,令我沮丧的是,使用Jetpack Compose似乎是不可能的。 示例: 在ConstraintLayout中,这是按如下方式完成的:

  • 几天来,我一直试图成功地构建我正在进行的项目(使用Jetpack Compose),但当我更新gradle构建插件和其他一些依赖项时,我无法正确运行该项目。有一些gradle版本与dagger-hilt依赖项冲突,我不知道如何修复它。我正在使用Android Studio的金丝雀测试版。 这里还有我所有的gradle构建文件: Gradle构建模块应用程序: Gradle构建(项目层级): 错误:

  • 我想知道什么是喷气背包中的脚手架组成一个BottomAppBar示例任何人都可以帮我

  • 我想根据条件更改我的开始导航片段。我的起始片段可以是片段1或片段2。有没有办法实现它?