Flutterでテキストを垂直方向と水平方向の中央に配置するにはどうすればよいですか?


116

テキストウィジェットのコンテンツをFlutterで垂直方向と水平方向の中央に配置する方法を知りたいのですが。Center(child: Text("test"))コンテンツ自体ではなく、ウィジェット自体を使用して中央揃えにする方法しか知りません。デフォルトでは、左揃えになっています。Androidでは、これを実現するTextViewのプロパティはと呼ばれていると思いgravityます。

私が欲しいものの例:

中央揃えのテキストの例

回答:


261

水平方向の配置のみを設定するテキスト配置中央プロパティ。

ここに画像の説明を入力してください

以下のコードを使用して、テキストを垂直方向と水平方向の中央に設定しました。

ここに画像の説明を入力してください

コード:

      child: Center(
        child: Text(
          "Hello World",
          textAlign: TextAlign.center,
        ),
      ),

1
@Shelly場合によっては、heightFactor:プロパティも追加する必要があります。例:Center(heightFactor:2.3、child:Text( 'SELFIE'、textAlign:TextAlign.center、style:TextStyle(fontSize:18.0、color: Colors.black、fontWeight:FontWeight.bold、))、)、
SanjeevSangral19年

私は見て同意します。水平方向と垂直方向に中央に配置されるため、これを正解に変更しました。
イェルーン・メイジャー

83

コンストラクターのTextAlignプロパティを使用できますText

Text("text", textAlign: TextAlign.center,)

36
これはテキストを水平方向に中央揃えするだけなので、なぜこれが答えとしてマークされたのかわかりませんが、質問は水平方向垂直方向に尋ねます。
Herohtar

3
はい、これは削除する必要があります、それは質問に答えません。
ハーゼン

50

私は、より柔軟なオプションがラップすることだと思うText()Align()そうのように:

Align(
  alignment: Alignment.center, // Align however you like (i.e .centerRight, centerLeft)
  child: Text("My Text"),
),

テキストウィジェットでの使用Center()TextAlign完全に無視されているようです。整列しTextAlign.leftないTextAlign.rightか、試行しても中央に残ります。


1
はるかに良い答えはこれです。
NikolaJovic20年

質問はテキストを水平方向と垂直方向の中央に配置する方法に関するものであるため、これはマークされた回答である必要があります。ありがとうございました!
アリGürelli

これは答えの人です、なぜ私のテキストがより大きなフォントサイズに揃えられなかったのか疑問に思っています、その中心はテキストで奇妙であり、テキストサイズを無視するブレークポイントがあります。合わせは、この問題を持っていないようです...愛のu <3
ValdaXD

8
                       child: Align(
                          alignment: Alignment.center,
                          child: Text(
                            'Text here',
                            textAlign: TextAlign.center,                          
                          ),
                        ),

これは私にとって最高の結果を生み出しました。


3

Center of 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
);
}

コーディングをお楽しみください👨‍💻


2

テキストを中央に配置します。

Container(
      height: 45,
      color: Colors.black,
      child: Center(
        child: Text(
            'test',
            style: TextStyle(color: Colors.white),
        ),
      ),
    );

2

Intellij IDEユーザーの場合は、ショートカットキーAlt+Enterを使用して、選択Wrap with Centerしてから追加できます。textAlign: TextAlign.center


0

概要:Flexウィジェットを使用して、横軸に沿ってMainAxisAlignment.centerを使用してページのテキストを中央揃えにしました。コンテナのパディングを使用して、テキストの周囲に余白スペースを作成します。

  Flex(
            direction: Axis.horizontal,
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
                Container(
                    padding: EdgeInsets.all(20),
                    child:
                        Text("No Records found", style: NoRecordFoundStyle))
  ])

0

多分あなたは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,
              ),),
            ),
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.