内容简介:在flutter 中对 Expanded 使用 来平分布局占用比例(相当于Android里面的LinearLayout 控件中设置权重),但是在使用中遇到一些坑,然后就开始了踩坑之旅...........二种 Column 包含 Expanded ,但是 Text 内容增加,如果不加 maxLines: 3, 它会自动换行。如果不设置crossAxisAlignment属性值 那么 new Text("无Expanded一半"), 这个控件会居中 ,因为 Column 中的crossAxisAlignme
在flutter 中对 Expanded 使用 来平分布局占用比例(相当于Android里面的LinearLayout 控件中设置权重),但是在使用中遇到一些坑,然后就开始了踩坑之旅...........
Column
一种 Column 包含 Expanded 正常显示
Widget _columnExpanded(){
return new Column(
children: <Widget>[
new Expanded(child: new Text("有Expanded一半")),
new Text("无Expanded一半"),
],
);
}
复制代码
二种 Column 包含 Expanded ,但是 Text 内容增加,如果不加 maxLines: 3, 它会自动换行。如果不设置crossAxisAlignment属性值 那么 new Text("无Expanded一半"), 这个控件会居中 ,因为 Column 中的crossAxisAlignment 默认值是全部居中
Widget _columnMoreExpanded(){
return new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
new Expanded(
child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,"
"有Expanded一半,有Expanded一半有Expanded一半,有Expanded一半,有Expanded一半",
maxLines: 3,
)
),
new Text("无Expanded一半"),
],
);
}
复制代码
三种 Column 包含 Expanded ,但在Expanded中使用Column来加载多控件, 显示正常
/*
* Expanded 嵌套Column控件 然后Column 控件里面放两个 Text 会出现
*
*/
Widget _columnExpandedMoreWidget(){
return new Column(
children: <Widget>[
new Expanded(
child: new Column(
children: <Widget>[
new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 1,
overflow: TextOverflow.ellipsis,
)
],
)
),
new Text("无Expanded一半"),
],
);
}
复制代码
四种 Column 包含 Expanded,只对 Expanded 里面的Row 加入一个 Expanded 这时屏幕上就会出现,如下图情况:(超出屏幕)
Widget _columnExpandedMoreRowWidget(){
return new Column(
children: <Widget>[
new Expanded(
child: new Row(
children: <Widget>[
new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 2,
overflow: TextOverflow.ellipsis,
)),
new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 1,
overflow: TextOverflow.ellipsis,
)
],
)
),
new Text("无Expanded一半"),
],
);
}
复制代码
看到超出屏幕,于是将 Row 中的两个 Text 控件都加上 Expanded ,代码如下:
Widget _columnExpandedMoreRowWidget1(){
return new Column(
children: <Widget>[
new Expanded(
child: new Row(
children: <Widget>[
new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 2,
overflow: TextOverflow.ellipsis,
)),
new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 1,
overflow: TextOverflow.ellipsis,
)),
],
)
),
new Text("无Expanded一半"),
],
);
}
复制代码
超出屏幕的提示消除。如图
于是将 Expanded 中 Row 子控件 其中的一个 Text 内容减少,代码如下: 如图:
Widget _columnExpandedMoreRowWidget1(){
return new Column(
children: <Widget>[
new Expanded(
child: new Row(
children: <Widget>[
new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 2,
overflow: TextOverflow.ellipsis,
)),
new Expanded(child: new Text("有Expanded一半",
maxLines: 1,
overflow: TextOverflow.ellipsis,
)),
],
)
),
new Text("无Expanded一半"),
],
);
}
复制代码
平分的确算是平分了,但是没有达到效果,又修改: 代码如下:
Widget _columnExpandedMoreRowWidget1(){
return new Column(
children: <Widget>[
new Expanded(
child: new Row(
children: <Widget>[
new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 2,
overflow: TextOverflow.ellipsis,
)),
new Text("有Expanded一半有Expanded一半有Expanded一半",
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
],
)
),
new Text("无Expanded一半"),
],
);
}
复制代码
在 Row 中去掉一个 Expanded 设置,就变成了
但是,问题又来了,去掉一个 Expanded 设置后 Text 不能自动换行。目前没有找到解决办法。。。。除非使用前面那个办法 加两个Expanded 但是这样就是平分天下了
Row
在Row中 Column 的第四种 说明了 Row 一行的排列出现的问题,还是 Text 不换行
Widget _rowExpandedMoreWidget(){
return new Row(
children: <Widget>[
new Expanded(
child: new Row(
children: <Widget>[
new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 2,
overflow: TextOverflow.clip,
),),
new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",
maxLines: 2,
overflow: TextOverflow.clip,
),),
],
)
),
new Text("无Expanded一半"),
],
);
}
复制代码
通过以上列子 说明 Row 中 要横向的两个控件 要么平分 ,要么 Row 中的另外一个控件宽度不能太长,不然超出边界不能显示,在Column中始终能自动换行
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 使用 Flex 布局与其他普通布局的简单对比
- Android使用BottomNavigationView及ViewPager布局
- iOS使用代码进行AutoLayout自动布局
- Android开发 - 使用ConstraintLayout(一)传统布局的问题
- iOS 中使用 FlexBox 布局实现图片九宫格
- (译)使用渲染函数构建一个设计系统的排版布局
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Ant Colony Optimization
Marco Dorigo、Thomas Stützle / A Bradford Book / 2004-6-4 / USD 45.00
The complex social behaviors of ants have been much studied by science, and computer scientists are now finding that these behavior patterns can provide models for solving difficult combinatorial opti......一起来看看 《Ant Colony Optimization》 这本书的介绍吧!