如何在 Android Compose VerticalPager 中对齐垂直居中内容

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

我正在使用 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)

看起来像在工作。 但它有两个问题。

  1. 当我从索引1滚动到0时,顶部UI不流畅...
  2. 设备高度不一样。所以我无法设置固定的垂直contentPadding(120.dp)

有更好的解决办法吗?

android android-viewpager android-jetpack-compose
1个回答
0
投票

据我理解你的问题,我认为你可以使用:

  1. VerticalPager 上的快速滑动行为

flingBehavior = RememberSnapFlingBehavior(lazyListState = 状态)

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