[英]Compose - Scroll VerticalPager to the top when outer HorizontalPager is scrolled
I have a VerticalPager inside HorizontalPager.我在 HorizontalPager 中有一个 VerticalPager。
When I scroll VerticalPager down to the Nth page in the 1st page of the HorizontalPager, then scroll to other pages in HorizontalPager, then come back to the 1st page of the HorizontalPager the Nth page I scrolled down to in VerticalPager is saved.当我将 VerticalPager 向下滚动到 HorizontalPager 第一页的第 N 页,然后滚动到 HorizontalPager 中的其他页面,然后返回到 HorizontalPager 的第一页时,我在 VerticalPager 中向下滚动到的第 N 页被保存。
I want always the 1st page of the VerticalPager (not the Nth page I scolled to) to be open whenever HorizontalPager is scrolled.我希望在滚动 HorizontalPager 时始终打开 VerticalPager 的第一页(而不是我浏览到的第 N 页)。
How can I achieve that?我怎样才能做到这一点?
My code:我的代码:
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 ->
}
}
}
Here's how you can scroll it manually when the page is no longer visible.当页面不再可见时,您可以通过以下方式手动滚动它。
I use snapshotFlow
, which creates a flow that emit values when the state used inside changes.我使用
snapshotFlow
,它创建一个流,当内部使用的 state 发生变化时发出值。
val verPagerState = rememberPagerState(initialPage = 0)
LaunchedEffect(Unit) {
snapshotFlow {
!pagerState.isScrollInProgress
&& pagerState.currentPage != idx
&& verPagerState.currentPage != 0
}.filter { it }
.collect {
verPagerState.scrollToPage(0)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.