Layout 颤振线性布局重量备选方案
我是学习颤振的Android开发者。我希望我的屏幕如下所示:Layout 颤振线性布局重量备选方案,layout,flutter,Layout,Flutter,我是学习颤振的Android开发者。我希望我的屏幕如下所示: |---------------------------------| | | | Babe I miss you | | | |---------------------------------| “宝贝”和“我想你”应该是两个独立的元素 对于Android xml,我将使
|---------------------------------|
| |
| Babe I miss you |
| |
|---------------------------------|
“宝贝”和“我想你”应该是两个独立的元素
对于Android xml,我将使用LinearLayout
和两个TextView
s解决这个问题,每个weight=1
。颤振的替代方案是什么
另外,我知道你可以用FrameLayout
或RelativeLayout
来解决这个问题,但我希望最接近LinearLayout
的行为。flatter的小部件相当于android的LinearLayout
和android:orientation=“horizontal”
,
这个小部件相当于android的LinearLayout
,具有android:orientation=“vertical”
小部件的属性相当于weight
属性,您可以将文本
小部件包装在灵活
小部件中,并指定灵活
属性
例如:
new Row(
children: <Widget>[
new Flexible(child: new Text("Babe"), flex: 1,),
new Flexible(child: new Text("I miss you"), flex: 1,)
],
)
新行(
儿童:[
新的弹性体(儿童:新文本(“宝贝”),弹性体:1,),
新的弹性体(儿童:新文本(“我想你”),弹性体:1,)
],
)
希望有帮助 您可以使用,它将允许您按照预期放置元素
Widget textSection = new Container(
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
new Text('Babe'),
new Text('I miss you')
)
)
新容器(
孩子:新的一排(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
新文本('Babe',样式:AppStyle.AppBarTextStyle,),
新文本(“我想你”,样式:AppStyle.AppBarTextStyle)
]
)
)
考虑到问题中的布局,如果要在屏幕末尾显示两个文本,一个在开头,另一个在结尾,只需将MainAxisAlignment.spaceBetween
属性添加到行中即可
因此,您需要将代码修改为
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
new Text('Babe'),
new Text('I miss you')
]
)
我不明白为什么第一个答案被接受,因为它只是将文本添加到屏幕的最右端
提示:如果您需要在每个文本周围添加一些填充,请将每个文本包装在一个容器中,并添加所需的填充和边距我们可以使用小部件为宽度和高度提供权重总和
FractionallySizedBox(
heightFactor: .5,
widthFactor: 1.0,
alignment: Alignment.topCenter,
child: child,
)
有关更多信息:
使用小部件也可以产生如下线性布局效果:
Row(
children: <Widget>[
Expanded(
child: Container(child: Text("Babe")),
flex: 2,
),
Expanded(
child: Container(child: Text("I miss you"),alignment: Alignment.centerRight),
flex: 2,
),
],
),
行(
儿童:[
扩大(
子:容器(子:文本(“宝贝”)),
弹性:2,
),
扩大(
child:Container(child:Text(“我想你”),alignment:alignment.centerRight),
弹性:2,
),
],
),
屏幕截图:
使用
flex
属性附带的Spacer
(默认为1
)
行(
儿童:[
Text('Hello'),
Spacer(),//必须使用MainAxisAlignment.spaceBetween
才能获得理想的用户界面。谢谢我不知道为什么接受这个答案,因为它没有产生理想的结果。请改用MainAxisAlignment.spaceBetween每个元素位于新行:(Flex是我一直在寻找的。谢谢,伙计。现在我可以在旁边显示两个列表视图。这与LinearLayout的权重完全相同。这应该是公认的答案。)
Row(
children: <Widget>[
Expanded(
child: Container(child: Text("Babe")),
flex: 2,
),
Expanded(
child: Container(child: Text("I miss you"),alignment: Alignment.centerRight),
flex: 2,
),
],
),