Jetpack Compose:允许手势穿过 Scaffold

3
我正在使用 Scaffold 来构建主屏幕的应用程序。我的要求是 Scaffold 在地图上方。(我正在使用 Google 地图来实现这一点。我正在使用 "Crane" 应用程序中的实现,这是 Compose 示例应用程序之一。)这样做的原因是即使切换选项卡,地图也将保持不变。

enter image description here

我已成功添加了地图和脚手架在顶部,但是我遇到了一个问题。当脚手架在地图上方时,我无法拖动地图。
我知道问题不在于地图,因为如果我删除脚手架,那么我就可以拖动地图。 我也知道问题不是脚手架捕捉点击事件的原因,因为我在脚手架下面添加了一个可点击的框,并能够检测到它的点击事件。
我怀疑可能是脚手架的抽屉手势检测正在消耗手势,但我将 drawerGesturesEnabled 设置为 false,仍然没有运气。
有没有人知道为什么我不能通过脚手架拖动我的 Google MapView?或者有任何建议如何解决这个问题?

你能解决这个问题吗? - ZeMoon
2个回答

3

我有一个类似的用例需要处理,这对我很有效。你应该使用BackdropScaffold

val backdropState = rememberBackdropScaffoldState(BackdropValue.Revealed)
val frontLayerHeightDp = LocalConfiguration.current.screenHeightDp / 3

BackdropScaffold(
    modifier = modifier,
    scaffoldState = backdropState,
    peekHeight = 0.dp,
    headerHeight = frontLayerHeightDp.dp,
    frontLayerShape = BottomSheetShape,
    frontLayerScrimColor = Color.Transparent,
    appBar = {},
    backLayerContent = {
        BackContent()
    },
    frontLayerContent = {
        FrontContent()
    }
)

我使用了新的GoogleMap组件作为BackContent,在github上查看示例,非常容易使用。


1

我在Scaffold(脚手架)中的Webview(网页视图)遇到了类似的问题,当我禁用了Scaffold上的手势后,Webview上的滚动效果有所改善。

             Scaffold(
                drawerGesturesEnabled = false, 

不好的是,抽屉内容需要通过命令显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接