Làm cách nào để căn giữa văn bản theo chiều dọc và chiều ngang trong Flutter?


113

Tôi muốn biết cách căn giữa nội dung của tiện ích Văn bản theo chiều dọc và chiều ngang trong Flutter. Tôi chỉ biết cách căn giữa tiện ích con bằng cách sử dụng Center(child: Text("test"))chứ không sử dụng chính nội dung, nó được căn trái theo mặc định. Trong Android, tôi tin rằng thuộc tính của TextView đạt được điều này được gọi là gravity.

Ví dụ về những gì tôi muốn:

ví dụ văn bản căn giữa

Câu trả lời:


245

Chỉ đặt thuộc tính căn chỉnh theo chiều ngang của văn bản.

nhập mô tả hình ảnh ở đây

Tôi đã sử dụng mã bên dưới để đặt văn bản ở giữa theo chiều dọc và chiều ngang.

nhập mô tả hình ảnh ở đây

Mã:

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

1
@Shelly Trong một số trường hợp, nó không hoạt động, bạn cần thêm thuộc tính heightFactor:, ví dụ: Center (heightFactor: 2.3, child: Text ('SELFIE', textAlign: TextAlign.center, style: TextStyle (fontSize: 18.0, color: Colors.black, fontWeight: FontWeight.bold,)),),
Sanjeev Sangral

Tôi đã xem qua và đồng ý. Đã thay đổi đây thành câu trả lời chính xác vì nó căn giữa theo chiều ngang và chiều dọc.
jeroen-meijer 20/09/19

82

Bạn có thể sử dụng TextAlignthuộc tính của hàm Texttạo.

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

34
Tôi không chắc tại sao điều này được đánh dấu là câu trả lời, vì điều này chỉ căn giữa văn bản theo chiều ngang, nhưng câu hỏi yêu cầu theo chiều ngang chiều dọc.
Herohtar

2
Có điều này nên được loại bỏ, nó không trả lời câu hỏi.
Hasen

48

Tôi nghĩ rằng một lựa chọn linh hoạt hơn sẽ được quấn Text()với Align()như vậy:

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

Sử dụng Center()dường như bỏ qua TextAlignhoàn toàn trên tiện ích Văn bản. Nó sẽ không căn chỉnh TextAlign.lefthoặc TextAlign.rightnếu bạn cố gắng, nó sẽ vẫn ở giữa.


1
Câu trả lời tốt hơn nhiều là câu trả lời này.
Nikola Jovic

đây phải là câu trả lời được đánh dấu vì câu hỏi là về cách căn giữa văn bản theo chiều ngang và chiều dọc. Cảm ơn bạn!
Ali Gürelli

câu trả lời này chắc chắn phải là câu được chấp nhận
Tom Ryan

Đây là câu trả lời cho các bạn, chỉ cần thắc mắc tại sao văn bản của tôi không được căn chỉnh với kích thước phông chữ lớn hơn, Hóa ra trung tâm đó rất kỳ lạ với văn bản và có một điểm ngắt trong sẽ bỏ qua kích thước văn bản. Align dường như không có vấn đề này ... tình yêu bạn <3
ValdaXD

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

Điều này tạo ra kết quả tốt nhất cho tôi.


3

Phần tử văn bản bên trong Center of SizedBox hoạt động theo cách tốt hơn nhiều, bên dưới Mã mẫu

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

Thích viết mã 👨‍💻


2

Đặt văn bản vào trung tâm:

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

2

Nếu bạn là người dùng intellij IDE, bạn có thể sử dụng phím tắt Alt+Enter, sau đó chọn Wrap with Centervà sau đó thêmtextAlign: TextAlign.center


0

Tổng quan: Tôi đã sử dụng tiện ích Flex để căn giữa văn bản trên trang của mình bằng cách sử dụng trung tâm MainAxisAlignment. dọc theo trục hoành. Tôi sử dụng vùng đệm vùng chứa để tạo khoảng trống lề xung quanh văn bản của mình.

  Flex(
            direction: Axis.horizontal,
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
                Container(
                    padding: EdgeInsets.all(20),
                    child:
                        Text("No Records found", style: NoRecordFoundStyle))
  ])
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.