listview - 为什么 GridView.builder 返回高度扩展的元素,而 ListView.Seperated 返回正常高度的元素?

标签 listview gridview flutter

我想在横向模式下使用 GridView 。所以我使用了 GridView,但所有的 Grid 元素都是垂直展开的。

我什至尝试使用 GridView.builder 的 ListView.builder 将 crossAxisCount 设置为 1 以产生与 ListView.builder 相同的效果,但所有项目都垂直展开。

Widget buildTopNews(BuildContext context) {
  return Container(
    padding: EdgeInsets.only(bottom: 20),
    child: MediaQuery.of(context).orientation == Orientation.portrait
        ? ListView.separated(
            shrinkWrap: true,
            physics: const NeverScrollableScrollPhysics(),
            itemBuilder: (BuildContext context, int index) {
              return NewsCard(
                news: topNews[index],
              );
            },
            itemCount: topNews.length,
            separatorBuilder: (BuildContext context, int index) {
              return SizedBox(
                height: 20,
              );
            },
          )
        : GridView.builder(
            physics: NeverScrollableScrollPhysics(),
            shrinkWrap: true,
            itemCount: topNews.length,
            gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
              crossAxisCount: 2,
              mainAxisSpacing: 20,
            ),
            itemBuilder: (BuildContext context, int index) {
              return NewsCard(
                news: topNews[index],
              );
            },
          ),
  );
}

最佳答案

Gridview 的 subview 有纵横比。这就是为什么您的项目具有与其宽度相同的高度(首先设置宽度)。更改 gridview 中的纵横比值以获得所需的高度。

关于listview - 为什么 GridView.builder 返回高度扩展的元素,而 ListView.Seperated 返回正常高度的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56398004/

相关文章:

java - 如何将 ListView 单选按钮中的数据保存到 SQLite?

android - 从 res/raw 读取文件 .txt 并将其显示到 ListView 中

c# - 在 ASP.Net 的 gridview 中获取选中的复选框

android - 图像显示为gridview

flutter - flutter 从字符串变量设置颜色

ios - 是否可以在 dart/flutter 项目的编译时获取当前时间?

android - 将搜索过滤器应用于自定义列表

c# - WPF ListView 对列单击进行排序

asp.net - 如何卡住 GridView 标题?

flutter - 耀斑动画图标尺寸太小