Odpowiedzi:
Myślę, że robisz to: android:layout_width = "wrap_content"
Jeśli tak jest, zrób to:android:layout_width = "match_parent"
Ogólnie android:gravity="right"
różni się od android:layout_gravity="right"
.
Pierwszy wpływa na pozycję samego tekstu w Widoku, więc jeśli chcesz, aby był wyrównany do prawej, to layout_width=
powinien być albo "fill_parent"
albo "match_parent"
.
Drugi wpływa na pozycję Widoku wewnątrz jego rodzica, innymi słowy - wyrównuje sam obiekt (pole edycji lub widok tekstowy) w widoku rodzica.
Lepszym rozwiązaniem jest to, które jest najprostsze i takie, które mniej modyfikuje zachowanie twojego kodu .
Co zrobić, jeśli możesz rozwiązać ten problem tylko za pomocą 2 właściwości TextView
?
Zamiast zmieniać swoje LinearLayout
właściwości, które mogą zmienić zachowanie LinearLayout
dziecka?
W ten sposób nie musisz zmieniać LinearLayout
właściwości i zachowania, musisz jedynie dodać dwie następujące właściwości do celu TextView
:
android:gravity="right"
android:textAlignment="gravity"
Co byłoby lepiej zmienić tylko swój cel, aby rozwiązać swoje rozwiązanie, zamiast mieć szansę na spowodowanie kolejnego problemu w przyszłości, modyfikując docelowego ojca? Pomyśl o tym :)
TextView
nieruchomości? - Możesz sprawdzić właściwość z referencji tutaj: developer.android.com/reference/android/view/…
android:layout_gravity
służy do wyrównywania widoku tekstu względem układu nadrzędnego.
android:gravity
służy do wyrównywania tekstu w widoku tekstu.
Czy na pewno próbujesz wyrównać tekst w widoku tekstu w prawo, czy chcesz przenieść sam widok tekstu w prawo w odniesieniu do układu nadrzędnego, czy próbujesz uzyskać oba
Upewnij się, że nie używasz, android:layout_width="wrap_content"
jeśli tak, to nie będzie w stanie ustawić grawitacji, ponieważ nie masz wystarczającej ilości miejsca na wyrównanie tekstu. Zamiast tego użyjandroid:layout_width="fill_parent"
android:gravity="right"
Jest on zasadniczo używany w układzie liniowym, więc musisz ustawić szerokość TextView lub EditText jako
android:layout_width = "match_parent"
i
Gdy pracujesz w układzie względnym, użyj
android:layout_alignParentRight="true"
Wykonaj (LinearLayout) android:layout_width="match_parent"
i TextViewandroid:layout_gravity="right"
Jeśli tak RelativeLayout
, możesz użyćandroid:layout_toRightOf="@id/<id_of_desired_item>"
Lub
Jeśli chcesz wyrównać do right
rogu urządzenia miejsceandroid:layout_alignParentRight="true"
Pozwól mi wyjaśnić pojęcie grawitacji za pomocą WEB, ponieważ wielu programistów jest tego świadomych.
android_layout_gravity
zachowuje się float:left|right|top|bottom
Natomiast android_gravity
praca jakotext_align:centre|left|right
W systemie Android float to android_layout_gravity, a text_align: is android_gravity.
I android_layout_gravity dotyczy względem rodzica. gdzie jako android_gravity dotyczy jego treści podrzędnej lub wewnętrznej.
Uwaga android_gravity działa tylko wtedy, gdy jego Widok ma wartość match_parent (gdy ma miejsce na środku).
Poniżej działa dla mnie:
<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" />
Uwaga android:layout_alignParentEnd
i android:textAlignment
ustawienia drugiego TextView.
powinno to służyć celowi
android:textAlignment="textStart"
W moim przypadku korzystałem Relative Layout
zemptyString
Po godzinie walki. Tylko to działało dla mnie:
android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"
layout_toRightOf
lub layout_toEndOf
oba działają, ale dla lepszego wsparcia użyłem obu.
Aby było bardziej jasne:
Właśnie to próbowałem zrobić:
I to było wyjście emulatora
Układ:
<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" />
Zauważ, że:
android:layout_width="wrap_content"
PracujeGravity
nie jest używany<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>
sprawia, że numer jeden jest wyrównany do środka zarówno poziomo, jak i pionowo.
spróbuj dodać android:gravity="center"
doTextView