内容简介:在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 布局实现图片九宫格
- (译)使用渲染函数构建一个设计系统的排版布局
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
python学习手册(原书第5版)
马克·卢茨 / 机械工业出版社 / 2018-10 / 219
如果你想动手编写高效、高质量并且很容易与其他语言和工具集成的代码,本书将快速地帮助你利用Python提高效率。本书基于Python专家的流程培训课程编写,内容通俗易懂。本书包含很多注释的例子和插图,以帮助你开始使用Python2.7和3.3。每章都包含关于Python语言的重要组成部分的一节课。本书主要内容:了解Python的主要内置对象类型,如数字、列表和字典;创建和处理对象的Python语句,......一起来看看 《python学习手册(原书第5版)》 这本书的介绍吧!