Accompanist 的 ViewPager 的 OffscreenPageLimit 行为

问题描述 投票:0回答:1

我正在使用 Accompanist 中的 HorizontalViewPager 在 viewpager 的每个页面中显示图像。我正在用 Coil 加载图像。这是代码:

val pagerState = rememberPagerState()

HorizontalPager(count = photos.size, state = pagerState) {
    idx ->
    photos[idx].let { cur ->
        Image(
            painter = rememberImagePainter(url),
            contentDescription = null,
            modifier - Modifier.fillMaxSize(), 
            contentScale = ContentScale.FillHeight,
            alignment = Alignment.Center
        )
    }
}

工作正常。但是,图像仅在页面打开后才加载。我想知道是否有一种方法可以在打开 viewpager 相邻页面之前预加载它们的内容。

AndroidX 中的

ViewPager 提供与

setOffscreenPageLimit
方法类似的行为。

android android-viewpager android-jetpack-compose jetpack-compose-accompanist
1个回答
0
投票

HorizontalPager 中添加 beyondBoundsPageCount 将会解决你的问题。

HorizontalPager(
    state = pagerState,
    modifier = Modifier
        .fillMaxWidth()
        .padding(top = 24.dp),
         beyondBoundsPageCount = pageCount.intValue // Default : 0
    ) { page ->    

      // **-- PAGE ITEMS --** //

}

注意: 请注意,为 beyondBoundsPageCount 使用较大的值将会 导致大量页面被组合、测量和放置,这将 违背了使用延迟加载的目的。

© www.soinside.com 2019 - 2024. All rights reserved.