Mogę użyć android:gravity="bottom|center_horizontal"
w xml w widoku tekstu, aby uzyskać pożądane wyniki, ale muszę to zrobić programowo. Mój tekst jest w środku, tablerow
jeśli to ma znaczenie relativelayout
.
Próbowałem:
LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
labelTV.setLayoutParams(layoutParams);
Ale jeśli dobrze rozumiem, to zastosuje to do tablerow
widoku tekstu, a nie do widoku?
it.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM
or
i nieand
?! ??!Spowoduje to wyśrodkowanie tekstu w widoku tekstowym:
źródło
LayoutParams
nie jest tutaj zdefiniowany i może się różnić, więc nie będzie się kompilował. Powinieneś znać układ rodzica (na przykładLinearLayout
) i napisać go tutaj.Możemy ustawić grawitację układu w dowolnym widoku, np. Poniżej-
Jest to równoważne z poniższym kodem XML
źródło
Powinieneś użyć
textView.setGravity(Gravity.CENTER_HORIZONTAL);
.Pamiętaj, że za pomocą
nie zadziała. Spowoduje to ustawienie grawitacji widżetu, a nie tekstu.
źródło
Użyj tego kodu
źródło
Spowoduje to ustawienie grawitacji widoku tekstu.
źródło
Rozwiązano to, wykonując kilka czynności, najpierw zdobywając
height
mójTextView
i nurkując go po tekście,size
aby uzyskać całkowitą liczbę linii możliwych zTextView
.Po uzyskaniu tej wartości musisz ustawić ją
TextView
maxLines
na tę nową wartość.Ustaw
Gravity
naBottom
raz została przekroczona maksymalna ilość linii i będzie przewijać automatycznie.Aby to działało poprawnie, musisz użyć
append()
opcjiTextView
, jeślisetText()
to nie zadziała.Zaletą tej metody jest to, że można jej używać dynamicznie, niezależnie
height
od TwojejTextView
i tekstusize
. Jeśli zdecydujesz się na modyfikacje układu, kod nadal będzie działał.źródło