繁体   English   中英

伴奏寻呼机 animateScrollToPage 无法正确滚动到下一页

[英]Accompanist Pager animateScrollToPage doesn't scroll to next page correctly

使用accompanist-pager版本0.25.1animateScrollToPage()似乎并没有一直滚动到使下一页完全可见,仍然显示上一页。 然而,非动画版本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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM