GridView中包含卡片的高度计算不正确。

19 浏览
0 Comments

GridView中包含卡片的高度计算不正确。

我有一个使用GridView来布局一些Card的应用程序。相关的代码看起来有点像这样:

body: new GridView.count(

crossAxisCount: 2,

children: [new Card(

child: new Column(

mainAxisSize: MainAxisSize.min,

children: [

const ListTile(

leading: const Text("0", style: const TextStyle(

fontWeight: FontWeight.bold, fontSize: 24.0)),

title: const Text('Some Heading'),

subtitle: const Text('My Subtitle'),

),

new ButtonTheme

.bar( // 使按钮使用适当的卡片样式

child: new ButtonBar(

children: [

new FlatButton(

child: const Text('CALL TO ACTION'),

onPressed: () {

/* ... */

},

),

],

),

),

],

),

),

// 重复相同的卡片

],

),

很不幸,它的渲染效果不好:

rendered

卡片太高了,它们应该在"CALL TO ACTION"按钮的下方结束。我该如何修复这个问题,让网格行自动适应内容的高度?

0
0 Comments

GridView 中包含的卡片无法正确计算高度的问题,可能的原因是网格视图默认情况下无法正确计算子项的高度。解决方法是通过更改 GridView 的 childAspectRatio 属性来调整子项的宽高比。

将下面的代码添加到 GridView 中,即可解决该问题:

GridView.count(

...

childAspectRatio: 10 / 9,

)

你可以根据需要调整 childAspectRatio 的值。

0
0 Comments

你的问题是GridView.count的瓷砖具有默认的宽高比1.0(即正方形),听起来你希望瓷砖的高度比这个要短。

一个快速的解决方法是将childAspectRatio硬编码为你喜欢的数字。更细致的方法是实现一个描述你想要的布局的SliverGridDelegate并使用GridView.custom。你也可以只使用2个元素的Row小部件的ListView,而不使用GridView

你能否展示一些代码,展示如何实现每个子项的可变高度?

这是一个基本的要求。我想知道为什么它需要这么复杂,不能通过GridView.count(...)来考虑。

- Collin Jackson 我需要以1:1(宽:高)的比例显示网格,但高度应该额外增加100像素。例如,我该如何做?请给予建议。谢谢。

0