Flutter为Android开发者模拟线性布局(Linear Layout)
线性布局(Linear Layout)是Android开发中最常用的布局之一。今天Flutter实现了LinaearLayout相关的属性。
1.orientation
LinearLayout 行 Column 在wiggle中使用MainAxisSize,即主轴对齐。 match_parent和wrap_contentandroid:orientation="horizontal"
和 和 android:orientation="ro 布局)和列(VerticalLayout)
匹配儿童控件Row(
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
),
Column(
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
),
,wrap_content
match_parent
子控件与父控件大小相同t父控件❙tent子控件与所有子控件相同大max和min
Row(
mainAxisSize: MainAxisSize.max,
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
),
Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
),
Column(
mainAxisSize: MainAxisSize.max,
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
),
Column(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
),
在允许的范围内。对齐包括左,中心,右
。扑来提供mainaxizalignment,并提供更丰富的支持。 ,中间,末端,空间之间,空间均匀,空间周围。
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
),
Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
)
mainAxisAlignment:MainAxisAlignment.end
mainAxisAlignment:MainAxisAlignment.spaceAround
mainAxisAlignment:MainAxisAlignment.MainAxisAlignment。 Alignment.spaceEvenly
//平均、均匀、平滑
Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
)
mainAxisAlignment: MainAxisAlignment.center
mainAxisAlignment: MainAxisAlignment.end
mainAxisAlignment: MainAxisAlignment.spaceAround
mainAxisAlign ment: MainAxisAlignment.xi AxisAlignment.spaceEvenly
crossAxisAlignment
顺便说一句crossAxisAlignment,交叉轴对齐,即Row的y轴对齐,Clumn的x轴对齐
Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Icon(
Icons.add_shopping_cart,
size: 50,
),
const Icon(
Icons.ac_unit,
size: 100,
),
const Icon(
Icons.add_alarm,
size: 50,
),
],
)
crossAxisAlignment:CrossAxisAlignment.center
crossAxisAlignment。 .end
crossAxisAlignment:CrossAxisAlignment.stretch
layout_weight
创建布局时,布局通常是按比例的。 Android中使用layout_weight设置值,flutter中flexi,Expanded包裹子组件并添加flex。将其包裹在容器中并添加颜色以使其更容易看到。
Row(
children: [
Expanded(
flex: 1,
child: Container(
color: Colors.red,
child: const Icon(
Icons.add_shopping_cart,
size: 50,
),
),
),
Expanded(
flex: 2,
child: Container(
color: Colors.green,
child: const Icon(
Icons.ac_unit,
size: 100,
),
),
),
Expanded(
flex: 4,
child: Container(
color: Colors.blue,
child: const Icon(
Icons.add_alarm,
size: 50,
),
),
),
],
),
以上就可以完成页面的主要布局了。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。