Yanıtlar:
Bunu yaptığınızı düşünüyorum: android:layout_width = "wrap_content"
Eğer durum buysa, bunu yapın:android:layout_width = "match_parent"
Genel olarak, android:gravity="right"
farklıdır android:layout_gravity="right"
.
Birincisi metnin kendisini Görünüm içindeki konumunu etkiler, bu nedenle sağa hizalanmasını istiyorsanız, layout_width=
ya "fill_parent"
da olmalıdır "match_parent"
.
İkincisi, Görünüm'ün üst öğesindeki konumunu etkiler, başka bir deyişle, nesnenin kendisini üst görünüm içinde hizalama (düzenleme kutusu veya metin görünümü).
Daha iyi çözüm, en basit olanıdır ve kod davranışınızda daha az değişiklik yapan çözümdür .
Bu sorunu yalnızca 2 Özellikler ile çözebilirseniz ne olur TextView
?
LinearLayout
Özelliklerinizi değiştirmek yerine, LinearLayout
çocukların davranışlarını değiştirebilir ?
Bu şekilde, LinearLayout
özellikleri ve davranışı değiştirmeniz gerekmez , yalnızca aşağıdaki iki özelliği hedefinize eklemeniz gerekir TextView
:
android:gravity="right"
android:textAlignment="gravity"
Gelecekte başka bir soruna neden olma ve hedef babanızı değiştirme şansına sahip olmak yerine, yalnızca çözümünüzü çözmek için hedefinizi değiştirmek daha iyi ne olabilir? bunu düşün :)
TextView
? - Buradaki referanstan özelliği kontrol edebilirsiniz: developer.android.com/reference/android/view/…
android:layout_gravity
, metin görünümünü üst düzene göre hizalamak için kullanılır.
android:gravity
metni metin görünümü içinde hizalamak için kullanılır.
Metin görünümündeki metni sağa hizalamaya çalıştığınızdan emin misiniz veya üst görünümle ilgili olarak metin görünümünü sağa taşımak mı istiyorsunuz, yoksa her ikisini de elde etmeye mi çalışıyorsunuz?
android:layout_width="wrap_content"
Eğer öyleyse kullanmadığınızdan emin olun, o zaman yerçekimini ayarlayamaz çünkü metnin hizalanması için yeterli alanınız yoktur. Bunun yerine kullanınandroid:layout_width="fill_parent"
android:gravity="right"
Temel olarak Doğrusal Düzen'de kullanılır, bu nedenle TextView veya EditText genişliğinizi
android:layout_width = "match_parent"
ve
Göreli Mizanpaj'da çalışırken,
android:layout_alignParentRight="true"
(LinearLayout) android:layout_width="match_parent"
ve TextView'leri yapınandroid:layout_gravity="right"
İçinde ise RelativeLayout
kullanabilirsinizandroid:layout_toRightOf="@id/<id_of_desired_item>"
Veya
right
Cihazın köşesine hizalamak istiyorsanız , yerandroid:layout_alignParentRight="true"
WEB kullanarak yerçekimi kavramını açıklayayım, çünkü birçok geliştirici bunun farkında.
android_layout_gravity
davranacağını float:left|right|top|bottom
Oysa android_gravity
olarak iştext_align:centre|left|right
Android şamandıra android_layout_gravity ve text_align: android_gravity olduğunu.
Ve android_layout_gravity ebeveyne göre uygulanır. burada android_gravity alt öğesi veya iç içeriği için geçerlidir.
Not android_gravity yalnızca Görünümü eşleştiğinde (ortalamak için boşluk olduğunda) çalışır.
Aşağıda benim için çalışıyor:
<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" />
Lütfen ikinci TextView öğesinin android:layout_alignParentEnd
ve android:textAlignment
ayarlarına dikkat edin .
bu amaca hizmet etmeli
android:textAlignment="textStart"
Benim durumumda, ben kullanıyordum Relative Layout
a içinemptyString
Bir saat boyunca bunun üzerinde mücadele ettikten sonra. Sadece bu benim için çalıştı:
android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"
layout_toRightOf
ya da layout_toEndOf
her ikisi de işe yarıyor, ama daha iyi desteklemek için her ikisini de kullandım.
Daha açık hale getirmek için:
Yapmaya çalıştığım buydu:
Ve bu emülatörün çıktısıydı
Yerleşim:
<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" />
Dikkat:
android:layout_width="wrap_content"
İşlerGravity
Kullanılmıyor<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>
bir numarayı hem yatay hem de dikey olarak hizalar
eklemeyi deneyin android:gravity="center"
içineTextView