如何删除 ListTile 颤振顶部和底部的空间?

Posted

技术标签:

【中文标题】如何删除 ListTile 颤振顶部和底部的空间?【英文标题】:How to Remove space at top and bottom ListTile flutter? 【发布时间】:2019-08-11 09:58:24 【问题描述】:

如何去掉ListTile的上下空格?

我的代码是:

 child: Column(
    children: <Widget>[
      ListTile(
        contentPadding: EdgeInsets.only(left: 0.0, right: 0.0),
        title: Text(
          'Home',
          style: TextStyle(fontSize: 15.0),
        ),
      ),
      ListTile(
        contentPadding: EdgeInsets.only(left: 0.0, right: 0.0),
        title: Text(
          'Audio',
          style:
              TextStyle(fontSize: 15.0, color: Colors.black45),
        ),
      ),),

截图:

【问题讨论】:

【参考方案1】:

上述解决方案都不起作用(目前)。最好的办法是使用 TextButton 并包含 Row 作为子项

【讨论】:

【参考方案2】:

更新

现在您还可以使用以下属性:

    horizontalTitleGap - 在 titleleading 之间 minVerticalPadding - 在 titlesubtitle 之间 minLeadingWidth - 前导的最小宽度 contentPadding - 内部填充

您可以使用visualDensity 属性来减少空间。

ListTile(
    visualDensity: VisualDensity(horizontal: 0, vertical: -4),
    title: Text("xyz")
);

visualDensity 值可以从-4.0 to 4.0 更改。降低值,视图更紧凑。

附:这个解决方案类似于不同的question

这个问题是关于top/bottom 间距的。但是other question 是关于leadingtitle 之间的差距

【讨论】:

我在我的 ListTile 小部件属性中找不到这个“visualDensity”!!! 解决了 50% 的空间,Listtile 顶部和内容之间仍有 6-8 像素的间隙。 @Kamlesh 如果您需要更大的灵活性,您可以创建自定义列表图块 @reverie_ss 好的,谢谢。 minVerticalPadding 非常适合我。【参考方案3】:

让我们尝试更短的方式:

ListTile(
          contentPadding: EdgeInsets.zero,
          dense: true,
          title: Text('label'),
        );

【讨论】:

contentPadding 帮我删除左右空格【参考方案4】:
ListTile(
    dense: true,
    contentPadding: EdgeInsets.symmetric(horizontal: 0.0, vertical: 0.0),
    visualDensity: VisualDensity(horizontal: 0, vertical: -4),
);

以上解决方案对我有用。我希望,这也会对你有所帮助。感谢您提出这个问题。

【讨论】:

【参考方案5】:

这在 ListTile 中对我有用:

visualDensity: VisualDensity(horizontal: 0, vertical: -4)

【讨论】:

【参考方案6】:

ListTile 是不可能的。在ListTileTheme 的帮助下可以进行一些修改,例如颜色,还有修改填充的选项,但仅适用于左右填充。正如@santosh 在他的回答中显示的那样,创建自己的自定义磁贴更好。 你也可以使用 SizedBox 但它会导致悲剧性的输出。

【讨论】:

是的,可以使用visualDensity。检查:***.com/a/63504719/6747251【参考方案7】:

在您的代码中将属性 dense: true 放入列表磁贴中

       ListTile(
                dense:true,
                contentPadding: EdgeInsets.only(left: 0.0, right: 0.0),
                title: Text(
                  'Home',
                  style: TextStyle(fontSize: 15.0),
                ),
              ),

希望对你有帮助!

【讨论】:

它只删除水平填充,而不是垂直填充。 "dense: true" 单独确实减少了垂直间距。但内容填充不适用于垂直间距问题【参考方案8】:

在你的ListTile 属性中实现这个dense:true,dense 参数使文本更小并将所有内容打包在一起。

您可以通过设置contentPadding 来更改内容在左侧和右侧(但不是顶部或底部)的插入量。默认值为 16.0,但这里我们将设置为 0.0

 ListTile(
   contentPadding: EdgeInsets.symmetric(vertical: 0.0, horizontal: 
    0.0),
   dense:true,
   title: Text("Your title"),
   subtitle: Text("subtitle",
    style: TextStyle(fontSize: 14.0),),
 );

【讨论】:

我需要dense: true 将我的title 文本垂直居中。谢谢!【参考方案9】:

对我来说,代替 ListTile.padding 变量工作的 Padding 小部件可以根据您对 ListItem 的要求进行更新。

Padding(
        padding: const EdgeInsets.only(left : 8.0 , right 8.0),
        child: Text("List Item Text",
            style: Theme.of(context).textTheme.body1))

【讨论】:

【参考方案10】:

试试这个

              child: Column(
                children: <Widget>[
                    Text(
                      'Home',
                      style: TextStyle(fontSize: 15.0),
                    ),
                    Text(
                      'Audio',
                      style:
                          TextStyle(fontSize: 15.0, color: Colors.black45),
                    ),
                 ),)

【讨论】:

以上是关于如何删除 ListTile 颤振顶部和底部的空间?的主要内容,如果未能解决你的问题,请参考以下文章

在objective-c中捏缩放后如何删除顶部和底部空间?

如何在iOS中从UITextview的顶部和底部移除多余的空间?

如何删除 textView 上的顶部和底部填充?

颤振:库比蒂诺 ListTile ? (或如何创建类似 iOS 的设置菜单)

颤振在底部表顶部显示 Snackbar

如何删除 ListView 中卡片之间的空格?