[英]Accompanist Pager animateScrollToPage doesn't scroll to next page correctly
使用accompanist-pager
版本0.25.1
, animateScrollToPage()
似乎并没有一直滚动到使下一页完全可见,仍然显示上一页。 然而,非动画版本scrollToPage()
似乎工作正常。 我是否缺少一些额外的参数?
@ExperimentalPagerApi
@Composable
fun MyPager() {
val pagerState = rememberPagerState()
HorizontalPager(
count = 10,
state = pagerState
) { pagerIndex ->
Box(
modifier = Modifier
.fillMaxWidth()
.height(150.dp)
.background(if (pagerIndex.mod(2) == 0) Color.Cyan else Color.Red)
)
}
with(pagerState) {
LaunchedEffect(key1 = currentPage) {
launch {
delay(10000)
animateScrollToPage(
page = (currentPage + 1).mod(pageCount)
)
}
}
}
}
问题是 pagerState 在 animation 结束之前更新。 要解决此问题,请提供另一个密钥
var key by remember { mutableStateOf(flase) }
LaunchedEffect(key1 = key) {
launch {
delay(2000)
with(pagerState) {
val target = if (currentPage < pageCount - 1) currentPage + 1 else 0
animateScrollToPage(page = target) //Broken
key = !key
}
}
}
我也遇到了同样的问题,最后我选择将accompanist-pager的版本回滚到0.24.1-alpha。
参考上面的答案,它在 0.29.0-alpha 中工作正常,代码如下
with(pagerState) {
if (pageCount > 0) {
var key by remember { mutableStateOf(0) }
LaunchedEffect(key1 = key) {
launch {
delay(5000)
val nextPage = (currentPage + 1).mod(pageCount)
animateScrollToPage(
page = nextPage
)
key = nextPage
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.