Jawaban:
Saya pikir Anda melakukan ini: android:layout_width = "wrap_content"
Jika ini masalahnya, lakukan ini:android:layout_width = "match_parent"
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.
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 LinearLayout
Properti Anda yang mungkin dapat mengubah perilaku LinearLayout
anak - anak?
Dengan menggunakan cara ini, Anda tidak perlu mengubah LinearLayout
properti 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 :)
TextView
properti? - Anda dapat memeriksa properti dari referensi di sini: developer.android.com/reference/android/view/…
android:layout_gravity
digunakan untuk menyelaraskan tampilan teks sehubungan dengan tata letak induk.
android:gravity
digunakan 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
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"
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"
Buat (LinearLayout) android:layout_width="match_parent"
dan TextView'sandroid:layout_gravity="right"
Jika ada di dalam RelativeLayout
Anda dapat menggunakanandroid:layout_toRightOf="@id/<id_of_desired_item>"
Atau
Jika Anda ingin menyelaraskan ke right
sudut perangkat tempatandroid:layout_alignParentRight="true"
Biarkan saya menjelaskan konsep gravitasi menggunakan WEB karena banyak pengembang menyadarinya.
android_layout_gravity
berperilaku float:left|right|top|bottom
Sedangkan android_gravity
bekerja 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).
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_alignParentEnd
dan android:textAlignment
pengaturan TextView kedua.
ini harus memenuhi tujuannya
android:textAlignment="textStart"
Dalam kasus saya, saya menggunakan Relative Layout
untukemptyString
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_toRightOf
atau layout_toEndOf
keduanya berfungsi, tetapi untuk mendukungnya lebih baik, saya menggunakan keduanya.
Untuk membuatnya lebih jelas:
Inilah yang saya coba lakukan:
Dan ini adalah keluaran emulator
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:
android:layout_width="wrap_content"
bekerjaGravity
tidak digunakan<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.
mencoba untuk menambahkan android:gravity="center"
keTextView
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"