如何使小部件填充列中的剩余空间

Posted

技术标签:

【中文标题】如何使小部件填充列中的剩余空间【英文标题】:How to make a widget fill remaining space in a Column 【发布时间】:2018-10-03 07:25:14 【问题描述】:

android中,我们可以根据TextView的大小,使ImageView尽可能的填充空间。

<LinearLayout
    android:layout_
    android:layout_
    android:orientation="vertical">
    <ImageView
        android:layout_
        android:layout_
        android:layout_weight="1"/>
    <TextView
        android:layout_
        android:layout_/>
</LinearLayout>

我们如何在Flutter 中实现这一点?假设我需要让Datetime(green) 尽可能地填充。

new Column(
    children: <Widget>[
        new Text('Title',
            style: new TextStyle(fontWeight: FontWeight.bold)
        ),
        new Text('Datetime',
            style: new TextStyle(color: Colors.grey)
        ),
    ],
)

【问题讨论】:

您不想填满图像,而不是填满文字吗?这是一个完全不同的主题,使字体变大 我已经编辑了这个问题。请忽略图像,基本上我只是想让日期时间(绿色的那个)根据标题的大小填充尽可能多的高度。字体不会改变。 【参考方案1】:

你可以使用:

    ExpandedAlign 定位孩子

    Column(
      children: [
        FlutterLogo(),
        Expanded( // add this
          child: Align(
            alignment: Alignment.bottomCenter,
            child: FlutterLogo(),
          ),
        ),
      ],
    )
    

    Spacer

    Column(
      children: [
        FlutterLogo(),
        Spacer(), // add this
        FlutterLogo(),
      ],
    )
    

    mainAxisAlignment

    Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween, // add this
      children: [
        FlutterLogo(colors: Colors.orange),
        FlutterLogo(colors: Colors.blue),
      ],
    )
    

【讨论】:

【参考方案2】:

如果您只需要添加空格,请使用Spacer()

new Column(
children: <Widget>[
    new Text('Title',
        style: new TextStyle(fontWeight: FontWeight.bold)
    ),
    new Text('Datetime',
        style: new TextStyle(color: Colors.grey)
    ),
    Spacer(),
],

【讨论】:

【参考方案3】:

不是 100% 肯定,但我认为您是这个意思。 Expanded 小部件扩展到它可以使用的空间。虽然我认为它在行或列中的行为有点不同。

new Column(
children: <Widget>[
    new Text('Title',
        style: new TextStyle(fontWeight: FontWeight.bold)
    ),
    new Expanded(
        child: new Text('Datetime',
             style: new TextStyle(color: Colors.grey)
        ),
    ),
],
)

【讨论】:

扩展将占用行或列中的剩余空间。 扩展了需要区域,但是在发布应用程序中,它显示RenderFlex错误,并且所有扩展的小部件都看不到。

以上是关于如何使小部件填充列中的剩余空间的主要内容,如果未能解决你的问题,请参考以下文章

使用tkinter.pack()始终使小部件居中

如何在kivy的gridlayout中使小部件跨越多个列/行

如何使小部件随 PyQt5 中的窗口缩放?

防止小部件填充Flutter中扩展的祖先

如何使小部件在颤动中相互浮动[关闭]

Kivy:如何使小部件表现得像溢出:隐藏