如何正确设置列表视图的高度

Posted

技术标签:

【中文标题】如何正确设置列表视图的高度【英文标题】:How to correctly set height for the list view 【发布时间】:2019-03-25 21:50:19 【问题描述】:

我有一列有 3 个孩子。第三个孩子有一个 ListView。如何设置 ListView 的高度,使其不会溢出屏幕。我不想通过从屏幕高度中减去其他 2 个孩子的高度来计算高度。我尝试了 LayoutBuilder 但我得到的框约束将 Infinity 作为最大高度 (BoxConstraints(0.0

我的小部件树看起来像这样

Container(  //Container A
 height: MediaQuery.of(context).size.height,
 child:Column(children:[
    TitleWidget(),
    SubtitleWidget(),
    Container( //Container B
      child:ListView(children:getChildren())
    )        
 ])
)

Container A 的高度就是屏幕高度。但是容器 B 的高度应该是屏幕高度 - TitleWidget() 的高度 - SubtitleWidget() 的高度。 如果我没有明确设置容器 B 的高度,我会得到“A RenderFlex 在底部被 X 像素溢出”。

我在这里遗漏了一些非常明显的东西吗?

谢谢

【问题讨论】:

【参考方案1】:

使用 Expanded 小部件而不是 Container 小部件包装您的列表视图。

【讨论】:

【参考方案2】:

我遇到了类似的问题。就我而言,我保留了Container,并在我的ListView 中添加了shrinkWrap: true,,这会将ListView 的大小缩小到它所有子项的总高度。

physics: NeverScrollableScrollPhysics(), 我特别不希望 ListView 在列项下滚动,但我希望所有内容一起滚动。

【讨论】:

以上是关于如何正确设置列表视图的高度的主要内容,如果未能解决你的问题,请参考以下文章

如何在表视图中正确设置动态标题视图?

嵌套回收器视图高度不包含其内容

如何设置这个集合视图的高度?

设置列表视图的最大高度

用表格视图单元格 SWIFT 中的图像制作列表的正确方法

android:如何平均划分线性布局元素