atur layout_width dan layout_height menjadi fill_parent, lalu atur gravitasi ke pusat. Itu akan melakukan triknya
Amila
2
fill_parent sudah tidak digunakan lagi sekarang jadi gunakan MATCH_PARENT di layout_width dan layout_height dan atur gravitasi dari TextView ke tengah.
Tampilan teks harus match_parent atau fill_parent agar ini berfungsi. Jika itu membungkus konten, maka itu tidak akan terpusat.
Kalel Wade
7
@KalelWade: memusatkan teks dalam tampilan teks dengan wrap_content tidak masuk akal sama sekali. Mungkin Anda berpikir untuk memusatkan tampilan teks dalam tampilan induk, dalam hal ini, Anda secara simultan menempatkan baris ini di induk.
Mooing Duck
@Moing Duck Jadi alasan untuk tidak menggunakan konten bungkus - itu tidak masuk akal. Tetapi ketika Anda sedang mengatasi dan menempel atau hanya terburu-buru, Anda mungkin tidak menyatukan dua dan dua. Itu sebabnya saya menyebutkannya.
Kalel Wade
1
jika TextView dengan lebar dan tinggi sama dengan "wrap_content" ada di dalam LinearLayout dengan lebar dan tinggi "match_parent" maka Anda perlu mengatur layout_gravity dari Linear_layout.
Faisal Naseer
1
@ MoooDuck, ketika tinggi "wrap_content" dan gravitasi "center_vertical", ia menarik Desain (pratinjau) sebagai terpusat, tetapi di perangkat itu diposisikan ke atas. Jadi buat tinggi "match_parent" dan atur gravitasi ke "center_vertical" atau "center".
CoolMind
297
Anda juga dapat mengaturnya secara dinamis menggunakan:
Apa kriteria penilaian untuk memutuskan cara memilih, untuk menulis dalam xml atau menulis dalam file Java?
kenju
2
@ Kenju jika Anda ingin mudah diedit dan nilainya tidak akan berubah selama runtime: XML. Jika Anda harus mengubah nilai realtime (misalnya, mengubah penyelarasan saat pengguna menekan tombol) maka Anda hanya dapat melakukannya melalui Java.
Gustavo Maciel
2
@ GustavoMaciel jadi, pada dasarnya xml kecuali perlu diubah secara dinamis ... Sekarang saya mengerti. Terima kasih atas jawaban Anda yang sederhana dan bermanfaat!
kenju 6-15
115
android:layout_centerInParent="true"
Ini berfungsi ketika digunakan dengan RelativeLayout di mana tinggi & lebar tata letak diatur ke wrap_content.
Ini TIDAK berfungsi bila ada bungkus kata di 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.
David Manpearl
83
Anda juga dapat menggunakan kombinasi:
android:gravity="left|center"
Kemudian, jika lebar tampilan teks lebih dari "fill_parent" teks masih akan disejajarkan ke kiri (tidak di tengah seperti dengan gravitasi yang hanya diatur ke "tengah").
Yang pertama dalam kode XML. Anda perlu memperhatikan di GravityAtribut. Anda juga dapat menemukan atribut ini di Editor Grafik; mungkin lebih mudah daripada EDITOR XML.
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.
Semantik kode salah. Ganti layout_centerhorizontaldan layout_centerverticaldengan layout_centerHorizontaldan layout_centerVertical("H" dan "V" ke huruf besar, jika tidak, tidak akan berfungsi).
yugidroid
2
layout_ * memberi tahu induk Lihat di mana ia ingin berada. Tanpa layout_ * memberi tahu View cara menempatkan komponennya
Untuk Tata Letak Linear: Dalam XML gunakan sesuatu seperti ini
<TextViewandroid: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
Untuk Relative Layout: di XML gunakan beberapa hal seperti ini
<TextViewandroid: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
Jika TextView'stinggi dan lebarnya wrap contentmaka teks di dalam TextViewselalu berada di tengah. Tetapi jika TextView'slebarnya match_parentdan tingginya adalah match_parentatau wrap_contentmaka Anda harus menulis kode di bawah ini:
Ini akan benar-benar menempatkan teks di TextView. Jika Anda hanya menggunakan gravitasi, ada sedikit trailing padding tergantung pada apa teksnya .... Jika Anda memiliki lencana lingkaran kecil dengan teks di tengah, misalnya, Anda dapat melihat perbedaan yang sangat jelas.
tarrball
14
Dalam RelativeLayout, itu akan menyenangkan dengan itu.
Dan yang lainnya Buttondan hal lain yang dapat Anda tambahkan.
Berikut ini berfungsi dengan baik untuk saya.
<RelativeLayoutxmlns: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"><TextViewandroid: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>
Jika Anda mencoba memusatkan teks pada TableRow di TableLayout, berikut adalah cara saya mencapai ini:
<TableRowandroid:id="@+id/rowName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dip"><TextViewandroid: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>
textAlignment = "center" tidak akan melakukan pekerjaan sampai TextView memiliki dimensi untuk match_parent
SAurabh
@ Saurabh contoh di atas berfungsi tanpa masalah.
Chathura Wijesinghe
apakah itu bekerja tanpa gravitasi ke induk atau tata letak gravitasi itu sendiri? Ini tidak akan penyelarasan teks akan menyelaraskan teks dalam batas tampilan sehingga hingga textView mengambil match_parent dalam hal ini tidak akan tampak seperti ini tanpa gravitasi di tata letak induknya atau layout_gravity dengan sendirinya
SAurabh
9
Inilah jawaban saya yang telah saya gunakan di aplikasi saya. Ini menunjukkan teks di tengah layar.
Tinggi dan lebar TextView adalah konten bungkus maka teks dalam tampilan teks selalu terpusat, lalu buat pusat dalam tata letak induknya dengan menggunakan:
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.
Btw, ada alasan Anda mundur ke revisi sebelumnya? Revisi yang Anda kembalikan adalah praktik yang baik sehingga apa yang telah disebutkan editor dapat membantu editor teks dengan penyandian.
Jawaban:
Saya berasumsi Anda menggunakan tata letak XML.
Anda juga dapat menggunakan gravitasi
center_vertical
ataucenter_horizontal
sesuai kebutuhan Anda.dan seperti yang dikomentari @stealthcopter di java:
.setGravity(Gravity.CENTER);
sumber
android:gravity="center"
). Itu masih menunjukkan di paling kiri layar. :(android:layout_gravity="center"
, yang melakukan sesuatu yang lain.Ini akan melakukan triknya
sumber
Anda juga dapat mengaturnya secara dinamis menggunakan:
sumber
Ini berfungsi ketika digunakan dengan RelativeLayout di mana tinggi & lebar tata letak diatur ke wrap_content.
sumber
TextView
. Teks akan menjadi lebar penuh dan multi-baris DAN LEFT-dibenarkan dalamTextView
. Ini akan muncul dibenarkan kiri pada tampilan. Anda harus menggunakan "gravitasi" sebagaimana ditentukan dalam jawaban lain.Anda juga dapat menggunakan kombinasi:
Kemudian, jika lebar tampilan teks lebih dari "fill_parent" teks masih akan disejajarkan ke kiri (tidak di tengah seperti dengan gravitasi yang hanya diatur ke "tengah").
sumber
Terapkan gravitasi:
Untuk vertikal:
Dalam XML:
sumber
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.Untuk skenario spesifik Anda, nilai gravitasi akan menjadi:
Di editor grafis Anda akan menemukan semua nilai yang mungkin, bahkan melihat hasilnya.
sumber
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:
sumber
Anda perlu mengatur TextView Gravity (Center Horizontal & Center Vertical) seperti ini:
dan
Dan secara dinamis menggunakan:
sumber
layout_centerhorizontal
danlayout_centervertical
denganlayout_centerHorizontal
danlayout_centerVertical
("H" dan "V" ke huruf besar, jika tidak, tidak akan berfungsi).Menurutku,
lebih baik dari,
mana yang lebih baik dari,
setidaknya untuk memformat teks.
sumber
Untuk Tata Letak Linear: Dalam XML gunakan sesuatu seperti ini
Untuk melakukan ini pada waktu berjalan gunakan sesuatu seperti ini dalam aktivitas Anda
Untuk Relative Layout: di XML gunakan beberapa hal seperti ini
Untuk melakukan ini pada waktu berjalan gunakan sesuatu seperti ini dalam aktivitas Anda
sumber
Gunakan dalam file XML.
File tata letak
atau:
Gunakan ini di dalam kelas Java
sumber
Gunakan ini untuk tata letak relatif
dan untuk tata letak lainnya
sumber
Jika
TextView's
tinggi dan lebarnyawrap content
maka teks di dalamTextView
selalu berada di tengah. Tetapi jikaTextView's
lebarnyamatch_parent
dan tingginya adalahmatch_parent
atauwrap_content
maka Anda harus menulis kode di bawah ini:Untuk RelativeLayout:
Untuk LinearLayout:
sumber
Saat menggunakan karya gravitasi untuk TextView, ada metode alternatif yang diterapkan di API level 17 -
Tidak tahu bedanya, tetapi berhasil juga. Namun hanya untuk API level 17 atau lebih tinggi.
sumber
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.
sumber
Cara termudah (yang secara mengejutkan hanya disebutkan dalam komentar, maka mengapa saya memposting sebagai jawaban) adalah:
sumber
Anda dapat mengatur tampilan
gravity
teks AndaCENTER
.sumber
Jika Anda mencoba memusatkan teks pada TableRow di TableLayout, berikut adalah cara saya mencapai ini:
sumber
Menggunakan
android:textAlignment="center"
sumber
Inilah jawaban saya yang telah saya gunakan di aplikasi saya. Ini menunjukkan teks di tengah layar.
sumber
Jika Anda menggunakan Layout Relatif:
Jika Anda menggunakan LinearLayout
sumber
Karena banyak jawaban yang disarankan di atas berfungsi dengan baik.
Jika Anda ingin memusatkannya secara vertikal:
atau hanya secara horizontal:
sumber
Cukup, dalam file XML Anda, atur gravitasi tampilan teks ke pusat:
sumber
Anda bisa melakukan ini untuk mendapatkan teks yang terpusat
sumber
Tinggi dan lebar TextView adalah konten bungkus maka teks dalam tampilan teks selalu terpusat, lalu buat pusat dalam tata letak induknya dengan menggunakan:
Untuk LinearLayout juga kodenya sama:
dan induk pro-gramatikal adalah kode java RelativeLayout ini saat dijalankan menggunakan sesuatu seperti ini dalam aktivitas Anda
sumber
Kita dapat mencapai ini dengan berbagai cara: -
sumber
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
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.
sumber
Coba dengan cara ini, itu akan berhasil
sumber
Sebenarnya, kita bisa melakukan yang lebih baik dengan mengecualikan fontPadding.
sumber