Mam TextView
w mojej aplikacji. Chcę wyrównać tekst w prawo. Próbowałem dodać:
android:gravity="right"
Ale to nie działa dla mnie.
Co mogę robić źle?
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ę odandroid: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.
źródło
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ć zachowanieLinearLayout
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 celuTextView
: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 :)
źródło
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
źródło
Poniższy fragment kodu:
działa dla mnie świetnie
źródło
Na wypadek, gdyby ktoś nadal potrzebował
źródło
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"
źródło
Jest on zasadniczo używany w układzie liniowym, więc musisz ustawić szerokość TextView lub EditText jako
i
Gdy pracujesz w układzie względnym, użyj
źródło
Wykonaj (LinearLayout)
android:layout_width="match_parent"
i TextViewandroid:layout_gravity="right"
źródło
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"
źródło
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).
źródło
Poniżej działa dla mnie:
Uwaga
android:layout_alignParentEnd
iandroid:textAlignment
ustawienia drugiego TextView.źródło
Możesz użyć:
źródło
powinno to służyć celowi
android:textAlignment="textStart"
źródło
W moim przypadku korzystałem
Relative Layout
zemptyString
Po godzinie walki. Tylko to działało dla mnie:
layout_toRightOf
lublayout_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:
Zauważ, że:
android:layout_width="wrap_content"
PracujeGravity
nie jest używanyźródło
Zetknąłem się z tym samym problemem i doszedłem do wniosku, że problem występuje, ponieważ szerokość_widoku w TextView ma zawartość wrap_content. Musisz mieć layout_width jako match_parent i android: gravity = "gravity"
źródło
sprawia, że numer jeden jest wyrównany do środka zarówno poziomo, jak i pionowo.
źródło
spróbuj dodać
android:gravity="center"
doTextView
źródło
W moim przypadku użyłem atrybutu „layout_alignRight” w tekście:
Jeśli chcesz dodać prawy margines, po prostu ustaw atrybut „Layout_Margin Right” na „20dp”, na przykład:
źródło