使用 Android Compose 时如何填充 Lazy Column 中的剩余空间?

dev*_*unu 10 android kotlin

我最近在项目中使用了 Compose。\n但是,我觉得 LazyColumn 的工作方式与 xml 有很大不同。

\n

特别是在创建列表时,我想填充topBar和footer之间的剩余空间,但我找不到方法。

\n

下面是我想要实现的页面的简化版本。

\n

在此输入图像描述

\n

topBar 固定在顶部,项目列表绘制在其下方。最后,附上 FooterView。可滚动区域包括itemList和FooterView。

\n

使用xml时,我将RecyclerView放在nestedScrollView中,并将权重设置为1。然后\xe2\x80\x8b\xe2\x80\x8b列表的区域展开,页脚自动推到最后。

\n

但是,在 Compose 中使用 LazyColumn 时,由于 LazyListScope 的原因,列表的范围无法扩展。

\n

如果不使用lazyColumn并且权重设置为1,则部分项目列表不可见。或者,如果不使用lazyColumn并且没有给出权重,则页脚不会附加到底部。

\n

最近我花了大部分时间试图解决这个问题。\n我需要一些关于如何实现这样的布局的帮助。谢谢。

\n

Ami*_*mir 2

您可以设置verticalArrangement并将Arrangement.SpaceBetween所有顶部视图放入一项中,将所有底部视图放入另一项中。
不幸的是,您的物品可能不会通过这种方法被回收。

Column(modifier = Modifier.fillMaxSize()) {
    TopBar()
    LazyColumn(
        verticalArrangement = Arrangement.SpaceBetween,
        horizontalAlignment = Alignment.CenterHorizontally,
        modifier = Modifier
            .fillMaxWidth()
            .weight(1F)
    ) {
        item {
          //All top views
        }
        item {
          //Bottom views
        }
    }
}
Run Code Online (Sandbox Code Playgroud)