【发布时间】:2022-05-20 17:23:50
【问题描述】:
我在 Jetpack compose 中创建了一个相当经典的折叠图像布局,其中我在屏幕顶部有一个视差滚动的图像,并且在某个点我将工具栏背景从透明更改为 primarySurface。这一切都很好。
我现在想在顶部有一个图像寻呼机而不是单个图像,但垂直滚动消耗了屏幕顶部的所有触摸。我已经尝试添加一个 NestedScrollConnection,但我似乎仍然只能在一个轴上获得 preScroll delta。显然,我什至无法在此区域内添加图标来进行手动寻呼机滚动,而不会消耗点击。一旦我从列中删除了verticalScroll,我就可以获取寻呼机的水平滚动事件。
我正在使用 Compose 1.0.2 和 Accompanist 0.18 pager 和 inset 库。
这是我想要添加寻呼机的现有代码的要点。如何让寻呼机和垂直滚动都工作?
val scrollState = rememberScrollState()
Box {
val imageHeight =
if (LocalConfiguration.current.orientation == Configuration.ORIENTATION_LANDSCAPE) 180.dp else 300.dp
Box {
// I want to insert a horizontal pager here
HeaderImage(
scrollPosition = scrollState.value,
info = item.heroImages.first(),
imageHeight = imageHeight
)
}
val appBarHeight = with(LocalDensity.current) { 56.dp.toPx() }
val scrollHeight = with(LocalDensity.current) { imageHeight.toPx() - appBarHeight }
Column(
Modifier
.verticalScroll(scrollState)
.padding(top = imageHeight)
.fillMaxSize()
) { ... }
TopAppBar( ... )
这是一个 github 存储库,我试图在其中展示一个简单的问题示例。我要么最终得到一个无法垂直滚动的水平寻呼机,要么主滚动布局也消耗了寻呼机工作所需的水平滚动。
【问题讨论】:
-
这仍然是 Compose 1.2.0-beta01 和 Accompanist 0.24.8-beta 的问题
-
我没听明白,分页器视图是否应该与
verticalScroll垂直滚动同步?还是应该是垂直滚动的一部分? -
目前垂直滚动会消耗所有滚动事件(包括水平滚动事件),因此寻呼机无法获取任何内容。它只是从不接收水平滚动。
-
嗨,Pylyp,我创建了一个简单的示例,希望您能理解这个问题。 github.com/barry-irvine/scroll_issue
-
像this 这样的做法有什么问题?至于我,它工作得很好——你可以向左/向右和向上/向下滚动——在第一次拖动时选择了方向,我认为这很方便。
标签: android-viewpager android-jetpack-compose android-collapsingtoolbarlayout jetpack-compose-accompanist