Làm cách nào để tôi 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
?
Làm cách nào để tôi 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
?
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 trọng lực center_vertical
hoặc center_horizontal
theo nhu cầu của bạn.
và như @stealthawaii đã nhận xét trong java: .setGravity(Gravity.CENTER);
android:gravity="center"
). Nó vẫn hiển thị ở phía xa bên trái của màn hình. :(
android:layout_gravity="center"
, mà làm một cái gì đó khác.
android:gravity="center"
Điều này sẽ làm cho mẹo
Bạn cũng có thể thiết lập nó một cách linh hoạt bằng cách sử dụng:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
Điều này hoạt động 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 quấn_content.
TextView
. Văn bản sẽ có chiều rộng đầy đủ và nhiều dòng VÀ TRÁI CỨ trong phạm vi TextView
. Nó sẽ xuất hiện bên trái 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.
Á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"
/>
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 EDITOR XML.
<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 chỉnh sửa đồ 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.
Nếu bạn đang sử dụng TableLayout, hãy đảm bảo đặt trọng lực của TableRows thành trung tâm. Nếu không nó sẽ không hoạt động. Ít nhất là nó không hoạt động với tôi cho đến khi tôi đặt trọng lực 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>
Bạn cần đặt TextView Gravity (Center vertical & Center vertical) như thế này:
android:layout_centerHorizontal="true"
và
android:layout_centerVertical="true"
Và năng động sử dụng:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
layout_centerhorizontal
và layout_centervertical
bằng layout_centerHorizontal
và layout_centerVertical
("H" và "V" thành chữ hoa, nếu không nó sẽ không hoạt động).
Đối với Bố cục tuyến tính: Trong XML sử dụng một cái gì đó như thế này
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text goes here"
/>
Để làm điều này trong thời gian chạy, hãy sử dụng một cái gì đó như thế này trong hoạt động của bạn
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Đối với Bố cục tương đối: trong XML sử dụng một số thứ như thế này
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:text="Your Text goes here"
/>
Để làm điều này trong thời gian chạy, hãy sử dụng một cái gì đó như thế này trong hoạt động của bạn
TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);
Sử dụng trong tệp XML.
Bố cục tập tin
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/stringtext"/>
hoặc là:
Sử dụng cái này bên trong lớp Java
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Sử dụng này để bố trí tương đối
android:layout_centerInParent="true"
và cho bố cục khác
android:gravity="center"
Nếu TextView's
chiều cao và chiều rộng wrap content
thì văn bản trong phạm vi TextView
luôn luôn được căn giữa. Nhưng nếu TextView's
chiều rộng match_parent
và chiều cao là match_parent
hoặc wrap_content
sau đó bạn phải viết mã dưới đây:
Đối với RelativeLayout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Hello World" />
</RelativeLayout>
Đối với tuyến tính :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Hello World" />
</LinearLayout>
Trong khi sử dụng trọng lực hoạt động cho TextView, có một phương pháp thay thế được triển khai trong cấp độ API 17 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Không biết sự khác biệt, nhưng nó cũng hoạt động. Tuy nhiên, chỉ dành cho API cấp 17 trở lên.
Trong RelativeLayout
, nó sẽ tốt đẹp với nó.
Và cái khác Button
và bất cứ điều gì khác mà bạn có thể thêm.
Sau đây làm việc độc đáo cho tôi.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff314859"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<TextView
android:id="@+id/txt_logo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="your text here"
android:textSize="30dp"
android:gravity="center"/>
...other button or anything else...
</RelativeLayout>
Cách dễ nhất (điều đáng ngạc nhiên chỉ được đề cập trong các bình luận, do đó tại sao tôi đăng bài dưới dạng câu trả lời) là:
textview.setGravity(Gravity.CENTER)
Nếu bạn đang cố gắng căn giữa văn bản trên TableRow trong TableLayout, đây là cách tôi đạt được điều này:
<TableRow android:id="@+id/rowName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dip" >
<TextView android:id="@+id/lblSomeLabel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_width="0dp"
android:layout_weight="100"
android:text="Your Text Here" />
</TableRow>
Sử dụng android:textAlignment="center"
<TextView
android:text="HOW WAS\nYOUR\nDAY?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/textView5"
/>
Đây là câu trả lời của tôi mà tôi đã sử dụng trong ứng dụng của mình. Nó hiển thị văn bản ở giữa màn hình.
<TextView
android:id="@+id/txtSubject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/subject"
android:layout_margin="10dp"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge" />
Nếu bạn đang sử dụng Giao diện tương đối:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
Nếu bạn đang sử dụng linearLayout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>
Đơn giản, trong tệp XML của bạn, đặt trọng lực của chế độ xem văn bản thành chính giữa:
<TextView
android:gravity="center" />
Bạn có thể làm như thế này để lấy văn bản làm trung tâm
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
Chiều cao và chiều rộng của TextView được bao bọc nội dung, sau đó văn bản trong chế độ xem văn bản luôn được căn giữa, sau đó tạo trung tâm trong bố cục chính của nó bằng cách sử dụng:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Hello.."/>
</RelativeLayout>
Đối với linearLayout, mã cũng vậy:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello.."/>
</LinearLayout>
và cha mẹ theo ngữ pháp là mã java RelativeLayout, lúc này sử dụng một cái gì đó như thế này trong hoạt động của bạn
TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);
Chúng ta có thể đạt được điều này bằng nhiều cách sau: -
Phương pháp XML 01
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:text="@strings/text"
/>
Phương pháp XML 02
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@strings/text"
/>
Phương pháp XML 03
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center"
android:text="@strings/text"
/>
Phương pháp XML 04
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:text="@strings/text"
/>
Phương pháp Java 01
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Phương pháp Java 02
textview.setGravity(Gravity.CENTER);
Phương thức Java 03
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Trọng lực TextView hoạt động theo bố trí cha mẹ của bạn.
Tuyến tính :
Nếu bạn sử dụng linearLayout thì bạn sẽ tìm thấy hai thuộc tính trọng lực android: vity & android: layout_gravity
android: vity: đại diện cho potion layout của TextView trong khi android: layout_gravity: thể hiện vị trí TextView trong chế độ xem cha.
Nếu bạn muốn đặt văn bản theo chiều ngang & trung tâm theo chiều dọc thì hãy sử dụng mã bên dưới
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="300dp"
android:background="@android:color/background_light"
android:layout_height="300dp">
<TextView
android:layout_width="match_parent"
android:text="Hello World!"
android:gravity="center_horizontal"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content"
/>
</LinearLayout>
Giao diện tương đối :
Sử dụng RelativeLayout, bạn có thể sử dụng thuộc tính bên dưới trong TextView
android: vity = "centre" cho trung tâm văn bản trong TextView.
văn bản bên trong android: vity = "centre_horizontal" nếu bạn muốn tập trung theo chiều ngang.
văn bản bên trong android: vity = "centre_vertical" nếu bạn muốn căn giữa theo chiều dọc.
android: layout_centerInParent = "true" nếu bạn muốn TextView ở vị trí trung tâm của chế độ xem chính. android: layout_centerHTHER = "true" nếu bạn muốn TextView ở giữa theo chiều ngang của chế độ xem chính. android: layout_centerV vertical = "true" nếu bạn muốn TextView ở giữa theo chiều dọc của chế độ xem chính.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="300dp"
android:background="@android:color/background_light"
android:layout_height="300dp">
<TextView
android:layout_width="match_parent"
android:text="Hello World!"
android:gravity="center"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
/>
</RelativeLayout>
Hãy thử theo cách này, nó sẽ hoạt động
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal|center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
/>
</LinearLayout>