Luruskan teks di Android TextView

215

Saya punya TextViewdi aplikasi saya. Saya ingin menyelaraskan teks di dalamnya ke kanan. Saya mencoba menambahkan:

android:gravity="right"

Tetapi ini tidak berhasil untuk saya.

Apa yang mungkin saya lakukan salah?

Bishan
sumber

Jawaban:

193

Saya pikir Anda melakukan ini: android:layout_width = "wrap_content"
Jika ini masalahnya, lakukan ini:android:layout_width = "match_parent"

pemain yang adil
sumber
2
@Bishan fill akan mengisi sisa ruang, pertandingan akan mengaturnya sama dengan lebar induk
Troy Cosentino
11
Sebenarnya, fill_parent dan match_parent adalah hal yang sama. Nama diubah menjadi match_parent karena ternyata fill_parent membingungkan orang.
Edward Falk
158

Secara umum, android:gravity="right"berbeda dari android:layout_gravity="right".

Yang pertama memengaruhi posisi teks itu sendiri di dalam Tampilan, jadi jika Anda ingin teksnya lurus, maka layout_width=harus salah satu "fill_parent"atau "match_parent".

Yang kedua mempengaruhi posisi Tampilan di dalam induknya, dengan kata lain - menyelaraskan objek itu sendiri (kotak edit atau tampilan teks) di dalam tampilan induk.

wiztrail
sumber
83

Solusi yang lebih baik adalah yang paling sederhana, dan yang kurang modifikasi dalam perilaku kode Anda .

Bagaimana jika Anda dapat mengatasi masalah ini hanya dengan 2 Properti di Anda TextView?

Alih-alih perlu mengubah LinearLayoutProperti Anda yang mungkin dapat mengubah perilaku LinearLayoutanak - anak?

Dengan menggunakan cara ini, Anda tidak perlu mengubah LinearLayoutproperti dan perilaku, Anda hanya perlu menambahkan dua properti berikut ke target Anda TextView:

android:gravity="right"
android:textAlignment="gravity"

Apa yang lebih baik untuk mengubah hanya target Anda untuk menyelesaikan solusi Anda daripada memiliki kesempatan untuk menyebabkan masalah lain di masa depan, memodifikasi ayah target Anda? Pikirkan tentang itu :)

Paulo Roberto Rosa
sumber
Saya mendapatkan pesan kesalahan yang mengatakan tidak ada pengidentifikasi sumber daya untuk 'textAlignment' sumber daya dalam paket android.
anu
Anda yakin bahwa Anda sedang mengakses suatu TextViewproperti? - Anda dapat memeriksa properti dari referensi di sini: developer.android.com/reference/android/view/…
Paulo Roberto Rosa
4
textAlignment ditambahkan di API level 17 (Android 4.2). Emulator / perangkat Anda harus menjalankan 4.2+ agar ini berfungsi.
thanhtd
Saya telah mencoba menggunakan properti textAlignment ini di Android 4.1.2 dan mendapatkan kesalahan "Tidak ditemukan pengidentifikasi sumber daya untuk atribut 'textAlignment'". Saya menemukan jawaban untuk kesalahan ini di sini stackoverflow.com/a/20176191/723507 . Bagaimana Anda bisa menggunakannya di 4.0.3?
thanhtd
20

android:layout_gravitydigunakan untuk menyelaraskan tampilan teks sehubungan dengan tata letak induk. android:gravitydigunakan untuk menyelaraskan teks di dalam tampilan teks.

Apakah Anda yakin Anda mencoba menyelaraskan teks di dalam tampilan teks ke kanan atau apakah Anda ingin memindahkan tampilan teks itu sendiri ke kanan sehubungan dengan tata letak induk atau Anda mencoba untuk mencapai keduanya

rogerstone
sumber
Saya mencoba untuk menyelaraskan teks di dalam tampilan teks ke kanan
Bishan
11

Cuplikan kode berikut:

android:textAlignment="textEnd"
android:layout_gravity="end"

bekerja bagus untukku

Fey Agape
sumber
11

Dalam kasus seseorang masih membutuhkan

android:gravity="end"
npk
sumber
untuk apa itu
gumuruh
Di LTR, ini menyelaraskan teks ke kanan dan di RTL, ke kiri
npk
8

Pastikan Anda tidak menggunakan android:layout_width="wrap_content"jika demikian maka itu tidak akan dapat mengatur gravitasi karena Anda tidak memiliki cukup ruang untuk teks untuk disejajarkan. Sebaliknya gunakanandroid:layout_width="fill_parent"

Lalit Poptani
sumber
7
android:gravity="right"

Ini pada dasarnya digunakan dalam Layout Linear sehingga Anda harus mengatur lebar TextView atau EditText sebagai

android:layout_width = "match_parent"

dan

Saat Anda bekerja di Layout Relatif, gunakan

android:layout_alignParentRight="true"
Kushal Ramola
sumber
5

Buat (LinearLayout) android:layout_width="match_parent"dan TextView'sandroid:layout_gravity="right"

Augustus Francis
sumber
5

Jika ada di dalam RelativeLayoutAnda dapat menggunakanandroid:layout_toRightOf="@id/<id_of_desired_item>"

Atau

Jika Anda ingin menyelaraskan ke rightsudut perangkat tempatandroid:layout_alignParentRight="true"

pengguna2342517
sumber
4

Biarkan saya menjelaskan konsep gravitasi menggunakan WEB karena banyak pengembang menyadarinya.

android_layout_gravity berperilaku float:left|right|top|bottom

Sedangkan android_gravitybekerja sebagaitext_align:centre|left|right

Di Android float adalah android_layout_gravity dan text_align: adalah android_gravity.

Dan android_layout_gravity berlaku relatif terhadap orang tua. dimana android_gravity berlaku untuk anak atau konten dalamnya.

Catatan android_gravity hanya berfungsi ketika View-nya match_parent (bila ada ruang ke pusat).

Zar E Ahmer
sumber
3

Di bawah ini berfungsi untuk saya:

<TextView
    android:id="@+id/tv_username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sarah" />

<TextView
    android:id="@+id/tv_distance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/tv_username"
    android:layout_alignParentEnd="true"
    android:layout_toEndOf="@+id/tv_username"
    android:text="San Marco"
    android:textAlignment="viewEnd" />

Harap perhatikan android:layout_alignParentEnddan android:textAlignmentpengaturan TextView kedua.

David Cheung
sumber
2

Kamu bisa memakai:

    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
Pablo
sumber
2

ini harus memenuhi tujuannya

android:textAlignment="textStart"

Masoud Cheragee
sumber
2

Dalam kasus saya, saya menggunakan Relative LayoutuntukemptyString

Setelah berjuang selama satu jam. Hanya ini yang bekerja untuk saya:

android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"

layout_toRightOfatau layout_toEndOfkeduanya berfungsi, tetapi untuk mendukungnya lebih baik, saya menggunakan keduanya.

Untuk membuatnya lebih jelas:

Inilah yang saya coba lakukan:

masukkan deskripsi gambar di sini

Dan ini adalah keluaran emulator

masukkan deskripsi gambar di sini

Tata letak:

<TextView
    android:id="@+id/welcome"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="16dp"
    android:text="Welcome "
    android:textSize="16sp" />
<TextView
    android:id="@+id/username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@id/welcome"
    android:layout_toRightOf="@id/welcome"
    android:text="@string/emptyString"
    android:textSize="16sp" />

Perhatikan itu:

  1. android:layout_width="wrap_content" bekerja
  2. Gravity tidak digunakan
Rohit Sharma
sumber
1

Saya juga menghadapi masalah yang sama dan menemukan masalah yang terjadi karena layout_width dari TextView mengalami wrap_content. Anda harus memiliki layout_width sebagai match_parent dan android: gravity = "gravity"

Arup Saha
sumber
1
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">

  <TextView
    android:id="@+id/tct_postpone_hour"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_gravity="center"
    android:gravity="center_vertical|center_horizontal"
    android:text="1"
    android:textSize="24dp" />
</RelativeLayout>

membuat nomor satu sejajar di tengah baik horisontal dan vertikal.

Alp Altunel
sumber
0

mencoba untuk menambahkan android:gravity="center"keTextView

TheGreenGoblen
sumber
0

Saya telah menggunakan atribut "layout_alignRight" dalam kasus saya, dalam teksnya:

android:layout_alignRight="@+id/myComponentId"

Jika Anda ingin menambahkan margin kanan, cukup atur atribut "Layout_Margin Right" menjadi "20dp" untuk contoh, dalam teksnya:

android:layout_marginRight="20dp"
Laurent
sumber