如何在堆栈中垂直或水平居中小部件?

Posted

技术标签:

【中文标题】如何在堆栈中垂直或水平居中小部件?【英文标题】:How to vertically or horizontally center a Widget in a Stack? 【发布时间】:2020-11-07 14:08:02 【问题描述】:

Center 小部件将小部件水平和垂直居中在堆栈的中心。如何才能使小部件仅水平或垂直居中?

使用 Row 或 Column 小部件可以使小部件在 Stack 中居中。不使用这些小部件可以做到吗?

条件:

不能使用行/列。 Stack 的大小在布局之前是未知的(不能使用硬编码的定位值)。

中心小部件:

Container(
      decoration:
          BoxDecoration(border: Border.all(color: Colors.black87, width: 10)),
      child: Stack(
        children: [
          Center(
            child: Container(color: Colors.amber, width: 50, height: 50),
          ),
        ],
      ),
    );

水平居中 w/Row:

Row(mainAxisAlignment: MainAxisAlignment.center)

垂直居中/列:

Column(mainAxisAlignment: MainAxisAlignment.center)

上面的对齐是想要的结果。其他 Flutter 小部件可以实现这些结果吗?

【问题讨论】:

【参考方案1】:

使用Align 小部件

 Align(
        alignment: Alignment.topCenter, // This will horizontally center from the top
        child: Container(
          decoration: BoxDecoration(
              border: Border.all(color: Colors.black87, width: 10)),
          child: Stack(
            children: [
              Container(color: Colors.amber, width: 50, height: 50),
            ],
          ),
        ),
      )

1.对于顶部中心使用对齐方式: Alignment.topCenter

2。对于左中使用对齐方式: Alignment.centerLeft

3.居中右对齐: Alignment.centerRight

3.对于底部中心使用对齐方式: Alignment.bottomCenter

【讨论】:

感谢您的回答!您是否有建议将位置设置为“中心左侧 50 像素”? 另外,是否有类似于 android 的约束布局属性的基于约束的解决方案? 目前还没有这样的小部件,但您可以将位置与 MediaQuery 一起使用,它在所有设备上的行为都相同。

以上是关于如何在堆栈中垂直或水平居中小部件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在媒体查询设置的流体布局中垂直和水平居中子元素?

-水平居中垂直居中水平垂直居中

我如何在乳胶中垂直和水平居中报价?

css居中小技巧

怎么使用CSS让图片水平垂直都居中?

css html 如何将图片img标签 水平居中 垂直居中 和水平垂直居中