ฉันจะจัดกึ่งกลางข้อความในแนวนอนและแนวตั้งใน a TextView
เพื่อให้ปรากฏตรงกลางของTextView
ในได้Android
อย่างไร
ฉันจะจัดกึ่งกลางข้อความในแนวนอนและแนวตั้งใน a TextView
เพื่อให้ปรากฏตรงกลางของTextView
ในได้Android
อย่างไร
คำตอบ:
ฉันสมมติว่าคุณกำลังใช้เค้าโครง XML
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/**yourtextstring**"
/>
นอกจากนี้คุณยังสามารถใช้แรงโน้มถ่วงcenter_vertical
หรือcenter_horizontal
ตามความต้องการของคุณ
และตามที่ @stealthcopter แสดงความคิดเห็นใน java: .setGravity(Gravity.CENTER);
android:gravity="center"
) มันยังคงแสดงที่ด้านซ้ายสุดของหน้าจอ :(
android:layout_gravity="center"
ซึ่งทำอย่างอื่น
android:gravity="center"
นี้จะทำเคล็ดลับ
คุณยังสามารถตั้งค่าแบบไดนามิกโดยใช้:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
ใช้งานได้เมื่อใช้กับ RelativeLayout โดยที่ความสูงและความกว้างของโครงร่างถูกตั้งค่าเป็น wrap_content
TextView
นี้ไม่ทำงานเมื่อมีคำห่อใน TextView
ข้อความที่จะเต็มไปด้วยความกว้างและหลายคู่สายและซ้ายธรรมภายใน มันจะปรากฏชิดขอบด้านซ้ายบนหน้าจอ คุณควรใช้ "แรงโน้มถ่วง" ตามที่ระบุไว้ในคำตอบอื่น ๆ
คุณยังสามารถใช้การรวมกัน:
android:gravity="left|center"
จากนั้นหากความกว้างของมุมมองข้อความมากกว่า "fill_parent" ข้อความจะยังคงจัดตำแหน่งไปทางซ้าย
ใช้แรงโน้มถ่วง:
TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);
สำหรับแนวตั้ง:
txtView.setGravity(Gravity.CENTER_VERTICAL);
ใน XML:
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/Hello_World"
/>
มีสองวิธีในการทำเช่นนี้
ครั้งแรกในรหัส XML คุณต้องให้ความสนใจที่Gravity
คุณสมบัติ นอกจากนี้คุณยังสามารถค้นหาคุณลักษณะนี้ในตัวแก้ไขกราฟิก มันอาจจะง่ายกว่า XML EDITOR
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text"
/>
สำหรับสถานการณ์เฉพาะของคุณค่าของแรงโน้มถ่วงจะเป็น:
center_vertical|center_horizontal
ในโปรแกรมแก้ไขกราฟิกคุณจะพบค่าที่เป็นไปได้ทั้งหมดแม้เห็นผลลัพธ์
หากคุณใช้ TableLayout ตรวจสอบให้แน่ใจว่าตั้งค่าความโน้มถ่วงของ TableRows ให้อยู่กึ่งกลางเช่นกัน มิฉะนั้นมันจะไม่ทำงาน. อย่างน้อยมันก็ไม่ได้ทำงานกับฉันจนกว่าฉันจะตั้งค่าแรงโน้มถ่วงของ TableRow ให้อยู่กึ่งกลาง
ตัวอย่างเช่นนี้:
<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>
คุณต้องตั้งค่าTextView Gravity (Center Horizontal & Center Vertical) ดังนี้:
android:layout_centerHorizontal="true"
และ
android:layout_centerVertical="true"
และใช้แบบไดนามิก:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
layout_centerhorizontal
และlayout_centervertical
โดยlayout_centerHorizontal
และlayout_centerVertical
("H" และ "V" เป็นตัวพิมพ์ใหญ่มิฉะนั้นมันจะไม่ทำงาน)
ในความเห็นของฉัน,
android:gravity="center"
ดีกว่า,
android:layout_centerInParent="true"
ซึ่งดีกว่า
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
อย่างน้อยสำหรับการจัดรูปแบบข้อความ
สำหรับ Linear Layout: ใน XML ใช้สิ่งนี้
<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"
/>
เมื่อต้องการทำสิ่งนี้ให้ทำสิ่งนี้ในกิจกรรมของคุณ
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
สำหรับเค้าโครงที่สัมพันธ์กัน: ใน XML ใช้สิ่งนี้
<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"
/>
เมื่อต้องการทำสิ่งนี้ให้ทำสิ่งนี้ในกิจกรรมของคุณ
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);
ใช้ในไฟล์ XML
จัดวางไฟล์
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/stringtext"/>
หรือ:
ใช้สิ่งนี้ภายในคลาส Java
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
ใช้สิ่งนี้สำหรับเค้าโครงที่สัมพันธ์กัน
android:layout_centerInParent="true"
และรูปแบบอื่น ๆ
android:gravity="center"
หากTextView's
ความสูงและความกว้างเป็นwrap content
ข้อความที่TextView
อยู่กึ่งกลางเสมอ แต่ถ้าTextView's
ความกว้างmatch_parent
และความสูงเท่ากับmatch_parent
หรือwrap_content
คุณต้องเขียนโค้ดด้านล่าง:
สำหรับ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>
สำหรับLinearLayout:
<?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>
ในขณะที่ใช้แรงโน้มถ่วงทำงานสำหรับ TextView มีวิธีการอื่นที่ใช้ใน API ระดับ 17 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
ไม่ทราบความแตกต่าง แต่ใช้งานได้เช่นกัน อย่างไรก็ตามสำหรับ API ระดับ 17 หรือสูงกว่าเท่านั้น
ในRelativeLayout
มันจะดีกับมัน
และอีกButton
และสิ่งอื่นที่คุณสามารถเพิ่มได้
งานต่อไปนี้ดีสำหรับฉัน
<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>
วิธีที่ง่ายที่สุด (ซึ่งถูกกล่าวถึงอย่างน่าประหลาดใจในความคิดเห็นเท่านั้นดังนั้นทำไมฉันโพสต์เป็นคำตอบ) คือ:
textview.setGravity(Gravity.CENTER)
คุณก็สามารถตั้งค่าgravity
ของ TextView CENTER
ของคุณลงใน
หากคุณพยายามจัดกึ่งกลางข้อความบน TableRow ใน TableLayout นี่คือวิธีที่ฉันได้รับ:
<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>
ใช้ 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"
/>
นี่คือคำตอบของฉันที่ฉันใช้ในแอพของฉัน มันแสดงข้อความที่กึ่งกลางของหน้าจอ
<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" />
หากคุณใช้เค้าโครงแบบสัมพัทธ์:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
หากคุณใช้ LinearLayout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>
ดังคำตอบมากมายที่แนะนำให้ใช้งานได้ดี
android:gravity="center"
หากคุณต้องการจัดกึ่งกลางมันในแนวตั้ง:
android:gravity="center_vertical"
หรือเพียงแค่แนวนอน:
android:gravity="center_horizontal"
เพียงแค่ในไฟล์ XML ของคุณให้ตั้งค่าแรงโน้มถ่วงของ TextView ให้อยู่กึ่งกลาง:
<TextView
android:gravity="center" />
คุณสามารถทำเช่นนี้เพื่อให้ข้อความอยู่กึ่งกลาง
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
ความสูงและความกว้างของ TextView คือการตัดเนื้อหาแล้วข้อความภายใน textview จะอยู่กึ่งกลางจากนั้นสร้างกึ่งกลางในเค้าโครงหลักโดยใช้:
<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>
สำหรับ LinearLayout รหัสก็เหมือนกัน:
<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>
และผู้ปกครองด้านโปรแกมแกรมคือโค้ดจาวาสคริปต์ RelativeLayout ซึ่งใช้งานในลักษณะนี้ในกิจกรรมของคุณ
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);
เราสามารถทำสิ่งนี้ได้หลายวิธี: -
วิธี 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"
/>
วิธี 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"
/>
วิธี XML 03
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center"
android:text="@strings/text"
/>
วิธีการ 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"
/>
วิธีการของ Java 01
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
วิธี Java 02
textview.setGravity(Gravity.CENTER);
วิธีการ Java 03
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
แรงโน้มถ่วง TextView ทำงานตามรูปแบบหลักของคุณ
LinearLayout :
หากคุณใช้ LinearLayout คุณจะพบกับคุณลักษณะแรงโน้มถ่วงของ Android สองตัว: แรงโน้มถ่วงและ Android: layout_gravity
android: แรงโน้มถ่วง: แสดงถึง potion เลย์เอาต์ของข้อความภายในของ TextView ในขณะที่ android: layout_gravity: แทนตำแหน่ง TextView ในมุมมองพาเรนต์
หากคุณต้องการตั้งค่าข้อความในแนวนอนและแนวตั้งให้ใช้โค้ดข้างล่างนี้
<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>
RelativeLayout :
ใช้ RelativeLayout คุณสามารถใช้คุณสมบัติด้านล่างใน TextView
android: gravity = "center" สำหรับ text center ใน TextView
android: แรงโน้มถ่วง = "center_horizontal" ข้อความภายในหากคุณต้องการกึ่งกลางแนวนอน
android: แรงโน้มถ่วง = "center_vertical" ข้อความภายในหากคุณต้องการให้อยู่กึ่งกลางแนวตั้ง
android: layout_centerInParent = "true" ถ้าคุณต้องการ TextView ในตำแหน่งกึ่งกลางของมุมมองพาเรนต์ android: layout_centerHorizontal = "true" ถ้าคุณต้องการ TextView ในแนวนอนกึ่งกลางของมุมมองพาเรนต์ android: layout_centerVertical = "true" ถ้าคุณต้องการ TextView ในแนวตั้งตรงกลางของมุมมองพาเรนต์
<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>
ลองใช้วิธีนี้มันจะได้ผล
<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>
ที่จริงแล้วเราสามารถทำได้ดีกว่าโดยไม่รวม fontPadding
<TextView
android layout_height="wrap_content"
android layout_height="wrap_content"
android:includeFontPadding="false"
android:textAlignment="center"
/>