我正在使用 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
方法类似的行为。
在 HorizontalPager 中添加 beyondBoundsPageCount 将会解决你的问题。
HorizontalPager(
state = pagerState,
modifier = Modifier
.fillMaxWidth()
.padding(top = 24.dp),
beyondBoundsPageCount = pageCount.intValue // Default : 0
) { page ->
// **-- PAGE ITEMS --** //
}
注意: 请注意,为 beyondBoundsPageCount 使用较大的值将会 导致大量页面被组合、测量和放置,这将 违背了使用延迟加载的目的。