禁用子 Compose 的嵌套滚动

Ahm*_*out 5 android android-jetpack-compose

我有一个可滚动列,其中有另一个可滚动列和一个 MapView。

由于 Compose 的默认行为是允许嵌套滚动,因此控制这两个也可以使用手势的子项有些困难。

我想做到这一点,以便当这些孩子收到指针事件时,他们自己处理它,并且永远不会将任何内容传递给父母。

没有未消耗的值或类似的东西。只要指针事件在它们的范围内,它们就会消耗掉所有事件。

我怎样才能做到这一点?

我试图研究 NestedScrolling,但这给了父级而不是子级更多的控制权。

关于指针事件的一些搜索引导我找到了一种解决方案,该解决方案禁用了孩子体内的所有手势。但我希望孩子能够理解并使用这些手势,而不是丢弃它们。

Pie*_*e I 1

您可以Modifier.nestedScroll()与自定义NestedScrollConnection对象一起使用。

例如,您可以通过覆盖 onPreScroll 来禁用子滚动

override fun onPreScroll(available: Offset, source: NestedScrollSource) = available.copy(x = 0f)
Run Code Online (Sandbox Code Playgroud)

或者禁用父级滚动:

override fun onPostScroll(
                consumed: Offset,
                available: Offset,
                source: NestedScrollSource
            ) = available.copy(x = 0f)
Run Code Online (Sandbox Code Playgroud)