Câu hỏi Làm cách nào để căn giữa văn bản theo chiều ngang và chiều dọc trong một TextView?


Làm cách nào để căn giữa văn bản theo chiều ngang và chiều dọc trong một TextView, để nó xuất hiện chính xác ở giữa TextView trong Android?


1688
2018-01-11 00:27


gốc


đặt cả layout_width và layout_height thành fill_parent, sau đó đặt trọng tâm thành center. Điều đó sẽ làm các trick - Amila
fill_parent không được dùng nữa vì vậy hãy sử dụng MATCH_PARENT trong layout_width và layout_height và thiết lập lực hấp dẫn của TextView thành trung tâm. - Bilal Ahmad


Các câu trả lời:


Tôi giả sử bạn đang sử dụng bố cục XML.

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
    android:text="@string/**yourtextstring**"
/>

Bạn cũng có thể sử dụng lực hấp dẫn center_vertical hoặc là center_horizontal theo nhu cầu của bạn.

và như @stealthcopter đã nhận xét trong java: .setGravity(Gravity.CENTER);


2655
2018-01-11 01:53



Điều này không hoạt động khi được sử dụng với RelativeLayout trong đó chiều cao và chiều rộng của bố cục được đặt thành wrap_content - Rob
@Rob, nếu chiều rộng và chiều cao là wrap_content, thì về mặt kỹ thuật, văn bản đã được căn giữa. - JoJo
Nếu tôi muốn căn chỉnh TextView liên quan đến một chế độ xem khác, nhưng văn bản của nó tập trung vào chính nó?
Điều này không hiệu quả với tôi (android:gravity="center"). Nó vẫn hiển thị ở phía xa bên trái của màn hình. :( - uSeRnAmEhAhAhAhAhA
Đừng nhầm lẫn với android:layout_gravity="center", cái gì khác. - Rudi Kershaw


android:gravity="center" 

Điều này sẽ làm các trick


398
2018-02-08 22:54



Chế độ xem văn bản phải là match_parent hoặc fill_parent để tính năng này hoạt động. Nếu nội dung bọc của nó, sau đó nó sẽ không trung tâm. - Kalel Wade
@KalelWade: định tâm văn bản trong một textview với wrap_content không có ý nghĩa gì cả. Có thể bạn đang nghĩ đến việc căn giữa chế độ xem văn bản trong chế độ xem gốc, trong trường hợp này, bạn mô phỏng dòng này trong phần tử gốc. - Mooing Duck
@Mooing Duck Vì vậy, lý do để không sử dụng nội dung bọc - nó không có ý nghĩa. Nhưng khi bạn đang đối phó và dán hoặc vội vã, bạn có thể không đặt hai và hai lại với nhau. Đó là lý do tôi đề cập đến nó. - Kalel Wade
nếu TextView có chiều rộng và chiều cao bằng "wrap_content" nằm bên trong LinearLayout với chiều rộng và chiều cao "match_parent" thì bạn cần đặt layout_gravity của Linear_layout. - Faisal Naseer
@MooingDuck, khi chiều cao là "wrap_content" và trọng lực là "center_vertical", nó vẽ trong Thiết kế (xem trước) làm trung tâm, nhưng trong một thiết bị, nó được định vị ở trên cùng. Vì vậy, hãy tạo chiều cao "match_parent" và đặt trọng số thành "center_vertical" hoặc "center". - CoolMind


Bạn cũng có thể thiết lập tự động bằng cách sử dụng:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

268
2017-11-21 12:25



Hoặc chỉ là textview.setGravity (Gravity.CENTER); - Amplify91
Tiêu chí để phán quyết là quyết định cách nào để chọn, viết bằng xml hoặc viết trong tập tin Java? - phi
@Kenju nếu bạn muốn nó có thể dễ dàng chỉnh sửa và giá trị sẽ không thay đổi trong suốt thời gian chạy: XML. Nếu bạn phải thay đổi giá trị thời gian thực (ví dụ, thay đổi căn chỉnh khi người dùng nhấn một nút) thì bạn chỉ có thể thực hiện nó thông qua Java. - Gustavo Maciel
@GustavoMaciel như vậy, về cơ bản xml, trừ khi nó cần phải được sửa đổi động ... Bây giờ tôi đã nhận nó. Cảm ơn câu trả lời đơn giản và hữu ích của bạn! - phi
thats sạch cảm ơn bạn - Moritz Schmidt


android:layout_centerInParent="true"

Điều này làm việc khi được sử dụng với RelativeLayout, nơi chiều cao và chiều rộng của bố cục được đặt thành wrap_content.


97
2017-11-11 00:58



Điều này trung tâm TextView, không phải là văn bản trong đó. - anthropomo
Điều này KHÔNG hoạt động khi có từ bọc trong TextView. Văn bản sẽ có độ rộng đầy đủ và nhiều dòng và được chứng minh LEFT bên trong TextView. Nó sẽ xuất hiện trái hợp lý trên màn hình. Bạn nên sử dụng "trọng lực" như được chỉ định trong các câu trả lời khác. - David Manpearl


Bạn cũng có thể sử dụng kết hợp:

android:gravity="left|center"

Sau đó, nếu chiều rộng textview lớn hơn "fill_parent", văn bản sẽ vẫn được căn chỉnh sang trái (không được căn giữa như với trọng lực chỉ được đặt thành "center").


68
2018-01-01 20:11





Áp dụng trọng lực:

TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);

Đối với ngành dọc:

txtView.setGravity(Gravity.CENTER_VERTICAL);

Trong XML:

<TextView      
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center"
    android:text="@string/Hello_World"        
/>

44
2018-05-30 05:34





Nếu bạn đang sử dụng TableLayout, hãy đảm bảo đặt trọng tâm của các TableRows thành trung tâm. Nếu không nó sẽ không hoạt động. Ít nhất nó không làm việc với tôi cho đến khi tôi đặt trọng tâm của TableRow thành trung tâm.

Ví dụ, như thế này:

<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center">        
    <TextView android:text="@string/chf" android:id="@+id/tv_chf" android:layout_weight="2" android:layout_height="wrap_content" android:layout_width="fill_parent" android:gravity="center"></TextView>        
</TableRow>

35
2018-05-13 11:57



Hấp dẫn. Phải kiểm tra xem điều đó có hợp lệ cho LinearLayout (phụ huynh TableRow) không. - Martin


Bạn cần phải đặt TextView Gravity (Trung tâm ngang & Trung tâm dọc) như thế này:

android:layout_centerHorizontal="true"   

android:layout_centerVertical="true"

Và tự động sử dụng:

textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

33
2018-05-15 05:03



Ngữ nghĩa mã là sai. Thay thế layout_centerhorizontal và layout_centervertical bởi layout_centerHorizontal và layout_centerVertical ("H" và "V" để viết hoa, nếu không nó sẽ không hoạt động). - yugidroid
layout_ * cho cha mẹ của View biết vị trí của nó. Nếu không có layout_ *, hãy cho View biết cách đặt các thành phần của nó - Dandre Allison


Có hai cách để làm điều này.

Đầu tiên trong mã XML. Bạn cần chú ý tại Gravity Thuộc tính. Bạn cũng có thể tìm thấy thuộc tính này trong Trình chỉnh sửa đồ họa; nó có thể dễ dàng hơn XML EDITOR.

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical|center_horizontal"
    android:text="Your Text"
/>

Đối với kịch bản cụ thể của bạn, các giá trị của trọng lực sẽ là:

center_vertical|center_horizontal

Trong trình soạn thảo đồ họa, bạn sẽ tìm thấy tất cả các giá trị có thể, thậm chí xem kết quả của chúng.


32
2017-10-17 12:11