ฉันจะจัดข้อความให้อยู่กึ่งกลางในแนวตั้งและแนวนอนใน Flutter ได้อย่างไร


117

ฉันต้องการทราบวิธีจัดกึ่งกลางเนื้อหาของวิดเจ็ตข้อความในแนวตั้งและแนวนอนใน Flutter ฉันรู้เพียงวิธีจัดศูนย์กลางวิดเจ็ตโดยใช้Center(child: Text("test"))แต่ไม่ใช่เนื้อหา โดยค่าเริ่มต้นจะจัดชิดซ้าย ใน Android ผมเชื่อว่าทรัพย์สินของ TextView gravityที่ประสบความสำเร็จนี้จะเรียกว่า

ตัวอย่างสิ่งที่ฉันต้องการ:

ตัวอย่างข้อความที่อยู่กึ่งกลาง

คำตอบ:


266

คุณสมบัติศูนย์การจัดแนวข้อความตั้งค่าการจัดแนวแนวนอนเท่านั้น

ใส่คำอธิบายภาพที่นี่

ฉันใช้โค้ดด้านล่างเพื่อตั้งค่าข้อความในแนวตั้งและแนวนอนตรงกลาง

ใส่คำอธิบายภาพที่นี่

รหัส:

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

1
@Shelly ในบางกรณีมันใช้ไม่ได้คุณต้องเพิ่ม heightFactor: property เช่น: Center (heightFactor: 2.3, child: Text ('SELFIE', textAlign: TextAlign.center, style: TextStyle (fontSize: 18.0, color: Colors.black, fontWeight: FontWeight.bold,)),),
Sanjeev Sangral

ฉันดูและเห็นด้วย เปลี่ยนคำตอบนี้เป็นคำตอบที่ถูกต้องเนื่องจากอยู่ตรงกลางในแนวนอนและแนวตั้ง
jeroen-meijer

85

คุณสามารถใช้ได้ TextAlignคุณสมบัติของตัวTextสร้าง

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

36
ฉันไม่แน่ใจว่าเหตุใดจึงถูกทำเครื่องหมายว่าเป็นคำตอบเนื่องจากสิ่งนี้จะเน้นเฉพาะข้อความในแนวนอน แต่คำถามจะถามในแนวนอนและแนวตั้ง
Herohtar

3
ใช่ควรลบออก แต่ไม่ตอบคำถาม
Hasen

51

ฉันคิดว่าตัวเลือกที่ยืดหยุ่นกว่าคือการรวมเข้า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
คำตอบที่ดีกว่านี้คือ
Nikola Jovic

นี่ควรเป็นคำตอบที่ทำเครื่องหมายไว้เนื่องจากคำถามเกี่ยวกับวิธีจัดกึ่งกลางข้อความในแนวนอนและแนวตั้ง ขอขอบคุณ!
Ali Gürelli

นี่คือคำตอบเพียงแค่สงสัยว่าทำไมข้อความของฉันไม่สอดคล้องกับขนาดตัวอักษรที่ใหญ่กว่าปรากฎว่าตรงกลางมันแปลกด้วยข้อความและมีจุดพักซึ่งจะไม่สนใจขนาดตัวอักษร Align ดูเหมือนจะไม่มีปัญหานี้ ... love u <3
ValdaXD


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),
        ),
      ),
    );


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.