在 Jetpack 撰写 HorizontalPager 中使用 Int.MAX_VALUE 作为页面大小时出现 IllegalArgumentException

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

我在 Jetpack compose 中实现了无限滚动的 HorizontalPager。最初它工作正常,但最近当我滚动寻呼机时,我收到 (java.lang.IllegalArgumentException: Cannot coerce value to anempty range: Maximum -1564.0 is less thanminimum 0.0) 错误。我其实不知道这是什么时候发生的。

示例代码

val listSize = exploreList.size
val pageCount = Int.MAX_VALUE
val maxRounds = pageCount / listSize
val initialPage = (maxRounds / 2) * listSize
val pagerState =
    rememberPagerState(initialPage = initialPage, pageCount = { pageCount })

HorizontalPager(
state = pagerState,
modifier = Modifier.fillMaxWidth(),
contentPadding = PaddingValues(horizontal = 54.dp),
) {
    val page = it % exploreList.size
    val id = exploreList.getOrNull(page)?.id ?: 0
    val posterPath = exploreList.getOrNull(page)?.posterPath
    ExploreListItem(
        posterPath = posterPath,
        modifier =
        Modifier
            .fillMaxWidth()
            .aspectRatio(4F / 5F)
            .carousalTransition(it, pagerState),
        onClick = { navigateToMovieDetails(id) },
    )
}

版本详情

撰写BOM版本:

2023.10.01

Kotlin 版本:

1.9.21

现在我将 Int.MAX_VALUE 替换为常量值,例如:

val pageCount = 1000
。这里没问题。

如何解决这个问题?

android kotlin android-jetpack-compose illegalargumentexception horizontal-pager
1个回答
0
投票

仅供参考,这似乎是 compose 基础库测试版中的一个错误。请参阅此处的相关问题:

https://issuetracker.google.com/issues/311414925

话虽如此,尝试在 1.6.x 版本中进行无限分页时,您仍然可能会遇到另一个问题:

https://issuetracker.google.com/issues/326887746

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