jpm*_*jpm 7 android android-viewpager android-jetpack-compose jetpack-compose-accompanist
我实现了一个简单的HorizontalPager,它基本上按预期工作。我开发的应用程序适用于一个特定设备,即横向模式下的 8 英寸平板电脑。目前需要滑动超过 50% 的屏幕宽度才能到达下一页/上一页。这是一个非常长的滑动我想减少它以使更改页面更容易......
我尝试了fling 行为,并尝试在偏移量更改时手动更改页面或拦截触摸事件......没有什么真正导致所需的行为。
既然“问题”看起来如此简单,我真的希望我刚刚疏忽了一些事情。你知道我可以尝试什么吗?
这解决了我的问题,您可以编辑 minFlingDistanceDp 来更改灵敏度:
HorizontalPager(
modifier = Modifier.fillMaxSize(),
state = pagerState,
count = noOfPages,
flingBehavior = flingBehavior(pagerState = pagerState, noOfPages = noOfPages)
) { page ->
//Content
}
val minFlingDistanceDp = 150.dp
@OptIn(ExperimentalPagerApi::class, dev.chrisbanes.snapper.ExperimentalSnapperApi::class)
@Composable
fun flingBehavior(pagerState: PagerState, noOfPages: Int): FlingBehavior {
var currentPageIndex = remember { pagerState.currentPage }
return PagerDefaults.flingBehavior(
state = pagerState,
snapIndex = { layoutInfo, _, _ ->
val distanceToStartSnap = layoutInfo.distanceToIndexSnap(currentPageIndex)
currentPageIndex = when {
distanceToStartSnap < -(minFlingDistanceDp.value) -> {
(currentPageIndex + 1).coerceAtMost(noOfPages - 1)
}
distanceToStartSnap > minFlingDistanceDp.value -> {
(currentPageIndex - 1).coerceAtLeast(0)
}
else -> {
currentPageIndex
}
}
currentPageIndex
}
)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5486 次 |
| 最近记录: |