User interface 如何在颤振中垂直和水平居中文本?
我想知道如何在flatter中垂直和水平地将文本小部件的内容居中。 我只知道如何使用User interface 如何在颤振中垂直和水平居中文本?,user-interface,text,widget,alignment,flutter,User Interface,Text,Widget,Alignment,Flutter,我想知道如何在flatter中垂直和水平地将文本小部件的内容居中。 我只知道如何使用center(child:Text(“test”))将小部件本身居中,而不知道内容本身。默认情况下,它与左侧对齐。在Android中,我相信实现这一点的TextView的属性称为gravity 我想要的示例: 您可以使用Text构造函数的textaalign属性 Text("text", textAlign: TextAlign.center,) 文本对齐中心特性设置仅用于水平对齐 我使用下面的代码将文本设置
center(child:Text(“test”))
将小部件本身居中,而不知道内容本身。默认情况下,它与左侧对齐。在Android中,我相信实现这一点的TextView的属性称为gravity
我想要的示例:
您可以使用
Text
构造函数的textaalign
属性
Text("text", textAlign: TextAlign.center,)
文本对齐中心特性设置仅用于水平对齐 我使用下面的代码将文本设置为垂直和水平居中 代码:
我认为一个更灵活的选择是使用
Align()
包装Text()
,如下所示:
Align(
alignment: Alignment.center, // Align however you like (i.e .centerRight, centerLeft)
child: Text("My Text"),
),
使用
Center()
似乎完全忽略了文本小部件上的TextAlign
。它不会对齐TextAlign.left
或TextAlign.right
如果您尝试,它将保持在中间 在SizedBox中心的文本元素以更好的方式工作,如下示例代码所示
Widget build(BuildContext context) {
return RawMaterialButton(
fillColor: Colors.green,
splashColor: Colors.greenAccent,
shape: new CircleBorder(),
child: Padding(
padding: EdgeInsets.all(10.0),
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
SizedBox(
width: 100.0,
height: 100.0,
child: Center(
child: Text(
widget.buttonText,
maxLines: 1,
style: TextStyle(color: Colors.white)
),
)
)]
),
),
onPressed: widget.onPressed
);
}
小部件构建(构建上下文){
返回原材料按钮(
fillColor:Colors.green,
splashColor:Colors.greenAccent,
形状:新的CircleBorder(),
孩子:填充(
填充:所有边缘设置(10.0),
孩子:排(
mainAxisSize:mainAxisSize.min,
儿童:[
大小盒子(
宽度:100.0,
高度:100.0,
儿童:中心(
子:文本(
widget.buttonText,
maxLines:1,
样式:TextStyle(颜色:Colors.white)
),
)
)]
),
),
onPressed:widget.onPressed
);
}
享受编码将文本放在中间:
Container(
height: 45,
color: Colors.black,
child: Center(
child: Text(
'test',
style: TextStyle(color: Colors.white),
),
),
);
这对我来说是最好的结果。如果您是intellij IDE用户,您可以使用快捷键
Alt+Enter
,然后选择Wrap with Center
,然后添加textAlign:textAlign.Center
概述:我使用Flex小部件使用MainAxisAlignment.Center沿水平轴将页面上的文本居中。我使用容器填充在文本周围创建一个空白空间
Flex(
direction: Axis.horizontal,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
padding: EdgeInsets.all(20),
child:
Text("No Records found", style: NoRecordFoundStyle))
])
也许你想为2个集装箱提供相同的宽度和高度
Container(
width: size.width * 0.30, height: size.height * 0.4,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6)
),
child: Center(
child: Text(categoryName, textAlign: TextAlign.center, style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 17,
color: Colors.white,
),),
),
我不确定为什么会将其标记为答案,因为这只会使文本水平居中,但问题要求水平和垂直。是的,这应该被删除,它不会回答问题。@Shelly在某些情况下它不起作用。您还需要添加heightFactor:属性,例如:Center(高度系数:2.3,子项:Text('SELFIE',textAlign:textAlign.center,style:TextStyle(fontSize:18.0,颜色:Colors.black,fontWeight:fontWeight.bold,) ), ),我看了一眼,同意了。更改为正确答案,因为它水平和垂直居中。更好的答案是这个。这应该是有标记的答案,因为问题是关于如何水平和垂直居中文本。谢谢!这是答案,伙计们,只是想知道为什么我的文本没有与更大的字体s对齐ize,原来中间的文字很奇怪,中间有一个断点,它会忽略文字大小。Align似乎没有这个问题…爱你,这绝对是我的一天。我一直尝试使用IDE包装,但没有想到上下文菜单。谢谢你!欢迎你。希望你能节省时间!
Flex(
direction: Axis.horizontal,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
padding: EdgeInsets.all(20),
child:
Text("No Records found", style: NoRecordFoundStyle))
])
Container(
width: size.width * 0.30, height: size.height * 0.4,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6)
),
child: Center(
child: Text(categoryName, textAlign: TextAlign.center, style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 17,
color: Colors.white,
),),
),