I'm confused about crossAxisAlignment
and mainAxisAlignment
. Can anyone please explain it in simple words?
答案 0 :(得分:13)
对于行:
mainAxisAlignment
=水平轴
crossAxisAlignment
=垂直轴
对于列:
mainAxisAlignment
=垂直轴
crossAxisAlignment
=水平轴
答案 1 :(得分:2)
Row
/Column
are associated to an axis:
Row
Column
mainAxisAlignment
is how items are aligned on that axis. crossAxisAlignment
is how items are aligned on the other axis.
答案 2 :(得分:1)
mainAxisAlignment 属性
当 mainAxisSize
设置为 MainAxisSize.max 时,Row
和 Column
可能会为其子项布置额外的空间。 mainAxisAlignment
属性决定了 Row 和 Column 如何在额外空间中放置它们的子项。 mainAxisAlignment 有六个可能的值:
示例:修改主轴对齐
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
BlueBox(),
BlueBox(),
BlueBox(),
],
);
}
}
class BlueBox extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 50,
height: 50,
decoration: BoxDecoration(
color: Colors.blue,
border: Border.all(),
),
);
}
}
crossAxisAlignment 属性
crossAxisAlignment
属性决定了 Row
和 Column
如何将其子项定位在其横轴上。 A Row 的横轴是垂直的,而 Column 的横轴是水平的。 crossAxisAlignment 属性有五个可能的值:
示例:修改横轴对齐
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
BlueBox(),
BiggerBlueBox(),
BlueBox(),
],
);
}
}
class BlueBox extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 50,
height: 50,
decoration: BoxDecoration(
color: Colors.blue,
border: Border.all(),
),
);
}
}
class BiggerBlueBox extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
width: 50,
height: 100,
decoration: BoxDecoration(
color: Colors.blue,
border: Border.all(),
),
);
}
}
答案 3 :(得分:0)
使用Row
时,其子级会水平排列。因此Row
的主轴是水平的。
在mainAxisAlignment
中使用Row
,可以使行的子级水平对齐(例如,左,右)。
Row
主轴的横轴是垂直的。因此,在crossAxisAlignment
中使用Row
可以定义其子级垂直对齐的方式。
在Column
中,情况恰恰相反。列的子级从上到下垂直排列(默认)。所以它的主轴是垂直的。这意味着,在mainAxisAlignment
中使用Column
可以使其子项垂直对齐(例如,顶部,底部),而crossAxisAlignment
定义子项如何在该列中水平对齐。
答案 4 :(得分:0)
答案 5 :(得分:0)
在列中,
在行中,
答案 6 :(得分:0)
取决于您希望如何将内容显示在屏幕上。我们需要使用 mainAxis 和 CrossAxis 对齐属性。