kotlin - 有没有办法通过自动滚动制作两种方式 HorizontalPager?
问题描述
伴奏库中的Horizo ntalPager 可以创建一个简单的 ViewPager;有没有办法在两端无限滑动?
@ExperimentalPagerApi
@Composable
fun AutoScrollPagerHorizontal(d: List<Stem>?) {
var data: MutableList<Stem> = d?.toMutableList() ?: mutableListOf()
if (data.isNullOrEmpty()) return
val pageState = rememberPagerState(pageCount = data.size)
HorizontalPager(
state = pageState
) {
Card(
Modifier
.height(240.dp)
.padding(start = 16.dp, end = 16.dp, top = 8.dp, bottom = 8.dp)
) {
Image(
painter = rememberGlidePainter(
request = data[it].icon,
),
contentDescription = data[it].title,
contentScale = ContentScale.FillBounds
)
}
}
}
此代码正确生成 viewpager,但在到达最后一个数据索引后不会滚动到第 0 个索引。
解决方案
您可以在可组合中使用此代码段来自动滚动寻呼机:
LaunchedEffect(key1 = pagerState.currentPage) {
launch {
delay(3000)
with(pagerState) {
val target = if (currentPage < pageCount - 1) currentPage + 1 else 0
animateScrollToPage(
page = target,
animationSpec = tween(
durationMillis = 500,
easing = FastOutSlowInEasing
)
)
}
}
}
推荐阅读
- sql-server - 我们可以按行监控数据库表读取操作吗?
- python - 尝试在 DataFrame.pivot 中使用多索引时出现 ValueError
- r - 使用坐标用ggplot2画圆
- java - Start query from specific row java
- ios - Class Intitaliser giving error in Swift
- android - Databinding error with viewmodel bindings
- wavefront - Wavefront to send Different Alert of the metric if it's from Different Source
- c# - 统一执行sqlite操作时场景冻结几秒钟
- ios - 使用 Objective C 自定义相机捕捉图像和裁剪
- c++ - 如何使用迭代器为对向量赋值?