Bagaimana cara pusat teks horizontal dan vertikal dalam TextView
, sehingga muncul persis di tengah-tengah TextView
di Android
?
Bagaimana cara pusat teks horizontal dan vertikal dalam TextView
, sehingga muncul persis di tengah-tengah TextView
di Android
?
Jawaban:
Saya berasumsi Anda menggunakan tata letak XML.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/**yourtextstring**"
/>
Anda juga dapat menggunakan gravitasi center_vertical
atau center_horizontal
sesuai kebutuhan Anda.
dan seperti yang dikomentari @stealthcopter di java: .setGravity(Gravity.CENTER);
android:gravity="center"
). Itu masih menunjukkan di paling kiri layar. :(
android:layout_gravity="center"
, yang melakukan sesuatu yang lain.
android:gravity="center"
Ini akan melakukan triknya
Anda juga dapat mengaturnya secara dinamis menggunakan:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
Ini berfungsi ketika digunakan dengan RelativeLayout di mana tinggi & lebar tata letak diatur ke wrap_content.
TextView
. Teks akan menjadi lebar penuh dan multi-baris DAN LEFT-dibenarkan dalam TextView
. Ini akan muncul dibenarkan kiri pada tampilan. Anda harus menggunakan "gravitasi" sebagaimana ditentukan dalam jawaban lain.
Terapkan gravitasi:
TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);
Untuk vertikal:
txtView.setGravity(Gravity.CENTER_VERTICAL);
Dalam XML:
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/Hello_World"
/>
Ada dua cara untuk melakukan hal ini.
Yang pertama dalam kode XML. Anda perlu memperhatikan di Gravity
Atribut. Anda juga dapat menemukan atribut ini di Editor Grafik; mungkin lebih mudah daripada EDITOR XML.
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text"
/>
Untuk skenario spesifik Anda, nilai gravitasi akan menjadi:
center_vertical|center_horizontal
Di editor grafis Anda akan menemukan semua nilai yang mungkin, bahkan melihat hasilnya.
Jika Anda menggunakan TableLayout pastikan untuk mengatur gravitasi TableRows ke tengah juga. Kalau tidak, itu tidak akan berhasil. Setidaknya itu tidak bekerja dengan saya sampai saya mengatur gravitasi TableRow ke tengah.
Misalnya, seperti ini:
<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>
Anda perlu mengatur TextView Gravity (Center Horizontal & Center Vertical) seperti ini:
android:layout_centerHorizontal="true"
dan
android:layout_centerVertical="true"
Dan secara dinamis menggunakan:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
layout_centerhorizontal
dan layout_centervertical
dengan layout_centerHorizontal
dan layout_centerVertical
("H" dan "V" ke huruf besar, jika tidak, tidak akan berfungsi).
Menurutku,
android:gravity="center"
lebih baik dari,
android:layout_centerInParent="true"
mana yang lebih baik dari,
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
setidaknya untuk memformat teks.
Untuk Tata Letak Linear: Dalam XML gunakan sesuatu seperti ini
<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"
/>
Untuk melakukan ini pada waktu berjalan gunakan sesuatu seperti ini dalam aktivitas Anda
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Untuk Relative Layout: di XML gunakan beberapa hal seperti ini
<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"
/>
Untuk melakukan ini pada waktu berjalan gunakan sesuatu seperti ini dalam aktivitas Anda
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);
Gunakan dalam file XML.
File tata letak
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/stringtext"/>
atau:
Gunakan ini di dalam kelas Java
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Gunakan ini untuk tata letak relatif
android:layout_centerInParent="true"
dan untuk tata letak lainnya
android:gravity="center"
Jika TextView's
tinggi dan lebarnya wrap content
maka teks di dalam TextView
selalu berada di tengah. Tetapi jika TextView's
lebarnya match_parent
dan tingginya adalah match_parent
atau wrap_content
maka Anda harus menulis kode di bawah ini:
Untuk 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>
Untuk 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>
Saat menggunakan karya gravitasi untuk TextView, ada metode alternatif yang diterapkan di API level 17 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Tidak tahu bedanya, tetapi berhasil juga. Namun hanya untuk API level 17 atau lebih tinggi.
Dalam RelativeLayout
, itu akan menyenangkan dengan itu.
Dan yang lainnya Button
dan hal lain yang dapat Anda tambahkan.
Berikut ini berfungsi dengan baik untuk saya.
<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>
Anda dapat mengatur tampilan gravity
teks Anda CENTER
.
Jika Anda mencoba memusatkan teks pada TableRow di TableLayout, berikut adalah cara saya mencapai ini:
<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>
Menggunakan 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"
/>
Inilah jawaban saya yang telah saya gunakan di aplikasi saya. Ini menunjukkan teks di tengah layar.
<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" />
Jika Anda menggunakan Layout Relatif:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
Jika Anda menggunakan LinearLayout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>
Cukup, dalam file XML Anda, atur gravitasi tampilan teks ke pusat:
<TextView
android:gravity="center" />
Anda bisa melakukan ini untuk mendapatkan teks yang terpusat
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
Tinggi dan lebar TextView adalah konten bungkus maka teks dalam tampilan teks selalu terpusat, lalu buat pusat dalam tata letak induknya dengan menggunakan:
<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>
Untuk LinearLayout juga kodenya sama:
<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>
dan induk pro-gramatikal adalah kode java RelativeLayout ini saat dijalankan menggunakan sesuatu seperti ini dalam aktivitas Anda
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);
Kita dapat mencapai ini dengan berbagai cara: -
Metode 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"
/>
Metode 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"
/>
Metode XML 03
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center"
android:text="@strings/text"
/>
Metode 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"
/>
Metode Java 01
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Metode Java 02
textview.setGravity(Gravity.CENTER);
Metode Java 03
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
TextView Gravity berfungsi sesuai tata letak induk Anda.
LinearLayout :
Jika Anda menggunakan LinearLayout maka Anda akan menemukan dua atribut gravitasi android: gravity & android: layout_gravity
android: gravity: mewakili ramuan tata letak teks internal TextView sedangkan android: layout_gravity: mewakili posisi TextView dalam tampilan induk.
Jika Anda ingin mengatur teks secara horizontal & tengah secara vertikal maka gunakan kode di bawah ini
<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 :
Menggunakan RelativeLayout Anda dapat menggunakan properti di bawah ini di TextView
android: gravity = "center" untuk pusat teks di TextView.
android: gravity = "center_horizontal" teks bagian dalam jika Anda ingin memusatkan secara horizontal.
android: gravity = "center_vertical" teks bagian dalam jika Anda ingin bagian tengah vertikal.
android: layout_centerInParent = "true" jika Anda ingin TextView berada di posisi tengah tampilan induk. android: layout_centerHorizontal = "true" jika Anda ingin TextView berada di tengah tengah tampilan induk. android: layout_centerVertical = "true" jika Anda ingin TextView berada di tengah tampilan induk.
<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>
Coba dengan cara ini, itu akan berhasil
<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>