Compose - 滚动外部 HorizontalPager 时将 VerticalPager 滚动到顶部
Compose - Scroll VerticalPager to the top when outer HorizontalPager is scrolled
我在 HorizontalPager 中有一个 VerticalPager。
当我在 HorizontalPager 的第一页中将 VerticalPager 向下滚动到第 N 页,然后在 HorizontalPager 中滚动到其他页面,然后返回到 HorizontalPager 的第一页时,我在 VerticalPager 中向下滚动到的第 N 页是已保存。
我希望在滚动 HorizontalPager 时始终打开 VerticalPager 的第一页(而不是我浏览到的第 N 页)。
我怎样才能做到这一点?
我的代码:
val pagerState = rememberPagerState()
HorizontalPager(count = myList.size, state = pagerState) {
idx ->
myList[idx].let { cur ->
val verPagerState = rememberPagerState(initialPage = 0)
VerticalPager(
count = cur.photos.size,
state = verPagerState
) { page ->
}
}
}
以下是当页面不再可见时如何手动滚动它。
我使用 snapshotFlow
,它创建了一个流,当内部使用的状态发生变化时,它会发出值。
val verPagerState = rememberPagerState(initialPage = 0)
LaunchedEffect(Unit) {
snapshotFlow {
!pagerState.isScrollInProgress
&& pagerState.currentPage != idx
&& verPagerState.currentPage != 0
}.filter { it }
.collect {
verPagerState.scrollToPage(0)
}
}
我在 HorizontalPager 中有一个 VerticalPager。
当我在 HorizontalPager 的第一页中将 VerticalPager 向下滚动到第 N 页,然后在 HorizontalPager 中滚动到其他页面,然后返回到 HorizontalPager 的第一页时,我在 VerticalPager 中向下滚动到的第 N 页是已保存。
我希望在滚动 HorizontalPager 时始终打开 VerticalPager 的第一页(而不是我浏览到的第 N 页)。
我怎样才能做到这一点?
我的代码:
val pagerState = rememberPagerState()
HorizontalPager(count = myList.size, state = pagerState) {
idx ->
myList[idx].let { cur ->
val verPagerState = rememberPagerState(initialPage = 0)
VerticalPager(
count = cur.photos.size,
state = verPagerState
) { page ->
}
}
}
以下是当页面不再可见时如何手动滚动它。
我使用 snapshotFlow
,它创建了一个流,当内部使用的状态发生变化时,它会发出值。
val verPagerState = rememberPagerState(initialPage = 0)
LaunchedEffect(Unit) {
snapshotFlow {
!pagerState.isScrollInProgress
&& pagerState.currentPage != idx
&& verPagerState.currentPage != 0
}.filter { it }
.collect {
verPagerState.scrollToPage(0)
}
}