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?

Jawaban:


193

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


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.


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 :)


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


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


11

Dalam kasus seseorang masih membutuhkan

android:gravity="end"

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"


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"

5

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


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"


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).


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.


2

Kamu bisa memakai:

    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"


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

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"


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.



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"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.