我正在使用 Jetpack compose 开发一个 Android 应用程序。
我应该开发一个屏幕。
它有很多内容卡(如Feed)
但它应该是滚动粘性的。所以我使用了VerticalPager。 当用户滚动时,内容应该只滚动到一张一张。
问题是第一个项目放置在 ui 的顶部。 但从第二个内容开始,它必须像这样放置在屏幕中央:
我可以使用下面的代码,它看起来工作正常。
val state = rememberPagerState()
VerticalPager(
state = state,
contentPadding = PaddingValues(
vertical = if (state.canScrollBackward) 120.dp else 0.dp
),
pageSize = PageSize.Fixed(328.dp),
) { idx ->
FeedUi(feeds[idx])
}
如果我将垂直 contentPadding 设置为 120.dp,则内容居中。
所以我用
state.canScrollBackward
。
state.canScrollBackward
表示当前位置大于0。(1,2,3,...不是0)
看起来像在工作。 但它有两个问题。
有更好的解决办法吗?
据我理解你的问题,我认为你可以使用:
flingBehavior = RememberSnapFlingBehavior(lazyListState = 状态)