Aby to działało, widok tekstu musi być zgodny z rodzicem lub rodzicem z rodzicem. Jeśli zawartość zawinięcia nie zostanie wyśrodkowana.
Kalel Wade,
7
@KalelWade: centrowanie tekstu w widoku tekstowym za pomocą wrap_content nie ma żadnego sensu. Być może zastanawiasz się nad wyśrodkowaniem widoku tekstu w widoku nadrzędnym, w takim przypadku po prostu wstawiasz tę linię do elementu nadrzędnego.
Mooing Duck
@Mooing Duck Tak więc powód, dla którego nie należy używać zawartości opakowania - nie ma sensu. Ale kiedy albo kopiujesz i wklejasz, albo po prostu spiesz się, nie możesz połączyć dwóch i dwóch. Dlatego o tym wspomniałem.
Kalel Wade,
1
jeśli TextView o szerokości i wysokości równej „wrap_content” znajduje się wewnątrz LinearLayout z szerokością i wysokością „match_parent”, musisz ustawić układ_grawitacji dla Linear_layout.
Faisal Naseer
1
@MooingDuck, gdy wysokość to „wrap_content”, a grawitacja to „center_vertical”, rysuje Design (podgląd) jako wyśrodkowany, ale w urządzeniu ustawia się go do góry. Zrób więc wysokość „match_parent” i ustaw grawitację na „center_vertical” lub „center”.
CoolMind
296
Możesz również skonfigurować go dynamicznie, używając:
Lub po prostu textview.setGravity (Gravity.CENTER);
Amplify91
Jakie są kryteria oceny, aby zdecydować, który sposób wybrać, pisać w formacie XML lub pisać w pliku Java?
kenju,
2
@Kenju, jeśli chcesz, aby można go było łatwo edytować, a wartość nie zmieni się podczas działania: XML. Jeśli musisz zmienić wartość w czasie rzeczywistym (na przykład zmień wyrównanie, gdy użytkownik naciśnie przycisk), możesz to zrobić tylko przez Javę.
Gustavo Maciel
2
@GustavoMaciel, więc w zasadzie xml, chyba że trzeba go dynamicznie modyfikować ... Teraz go mam. Dzięki za prostą i przydatną odpowiedź!
kenju,
114
android:layout_centerInParent="true"
Działa to w połączeniu z RelativeLayout, w którym wysokość i szerokość układu są ustawione na wrap_content.
To NIE działa, gdy w pliku jest zawijanie słów TextView. Tekst będzie w pełnej szerokości i będzie zawierał wiele wierszy, a LEWO będzie wyjustowany TextView. Na wyświetlaczu pojawi się z wyrównaniem do lewej. Powinieneś użyć „grawitacji” określonej w innych odpowiedziach.
David Manpearl
82
Możesz także użyć kombinacji:
android:gravity="left|center"
Następnie, jeśli szerokość widoku tekstu jest większa niż „fill_parent”, tekst będzie nadal wyrównany do lewej (nie wyśrodkowany, jak w przypadku grawitacji ustawionej tylko na „środek”).
Pierwszy w kodzie XML. Musisz zwrócić uwagę na GravityAtrybut. Ten atrybut można również znaleźć w Edytorze graficznym; może być łatwiejsze niż EDYTOR XML.
Jeśli używasz TableLayout, upewnij się, że grawitacja TableRows również jest wyśrodkowana. W przeciwnym razie to nie zadziała. Przynajmniej nie działało to ze mną, dopóki nie ustawiłem grawitacji TableRow na środku.
Semantyka kodu jest niepoprawna. Zamień layout_centerhorizontali layout_centerverticalprzez layout_centerHorizontali layout_centerVertical(„H” i „V” na wielkie litery, w przeciwnym razie nie zadziała).
yugidroid
2
layout_ * mówi rodzicowi View, gdzie chce być. Bez układu_ * mówi Widokowi, jak umieścić jego komponenty
<TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center_vertical|center_horizontal"android:text="Your Text goes here"/>
Aby to zrobić w czasie wykonywania, użyj czegoś takiego w swojej aktywności
<TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_centerInParent="true"android:text="Your Text goes here"/>
Aby to zrobić w czasie wykonywania, użyj czegoś takiego w swojej aktywności
Jeśli TextView'swysokość i szerokość są wrap contenttekstem, wówczas tekst TextViewzawsze będzie wyśrodkowany. Ale jeśli TextView'sszerokość match_parenti wysokość to match_parentczy wrap_contentpotem trzeba napisać poniższy kod:
To naprawdę wyśrodkuje tekst w TextView. Jeśli używasz tylko grawitacji, w zależności od tekstu jest trochę spływu końcowego. Jeśli na przykład masz małą okrągłą plakietkę z tekstem pośrodku, możesz zobaczyć bardzo oczywistą różnicę.
tarrball,
14
W RelativeLayoutbędzie miło z tym.
I jeszcze jedno Buttoni wszystko, co możesz dodać.
Poniższe działa dla mnie ładnie.
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ff314859"android:paddingLeft="16dp"android:paddingRight="16dp"><TextViewandroid:id="@+id/txt_logo"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="your text here"android:textSize="30dp"android:gravity="center"/>
...other button or anything else...
</RelativeLayout>
Jeśli próbujesz wyśrodkować tekst na TableRow w TableLayout, oto jak to osiągnąłem:
<TableRowandroid:id="@+id/rowName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dip"><TextViewandroid:id="@+id/lblSomeLabel"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center"android:layout_width="0dp"android:layout_weight="100"android:text="Your Text Here"/></TableRow>
textAlignment = "center" nie wykona zadania, dopóki TextView nie będzie mieć wymiarów do match_parent
SAurabh
Powyższy przykład @SAurabh działa bez żadnych problemów.
Chathura Wijesinghe
czy działa bez grawitacji w stosunku do grawitacji rodzica lub układu? Nie wyrównywanie tekstu wyrówna tekst w obrębie jego granic widoku, więc dopóki textView nie przyjmie match_parent w tym przypadku, nie będzie to wyglądać tak bez grawitacji w jej układzie macierzystym lub samej
układ_grawitacji
9
Oto moja odpowiedź, której użyłem w mojej aplikacji. Pokazuje tekst na środku ekranu.
Wysokość i szerokość TextView to zawijanie zawartości, a następnie tekst w widoku tekstowym jest zawsze wyśrodkowany, a następnie wyśrodkuj układ macierzysty, używając:
Grawitacja TextView działa zgodnie z układem nadrzędnym.
Układ liniowy :
Jeśli użyjesz LinearLayout, znajdziesz dwa atrybuty grawitacji android: gravity i android: layout_gravity
android: grawitacja: reprezentuje miksturę układu tekstu wewnętrznego TextView, podczas gdy android: grawitacja układu: reprezentuje pozycję TextView w widoku rodzica.
Jeśli chcesz ustawić tekst poziomo i pionowo na środku, użyj poniższego kodu
Za pomocą RelativeLayout można użyć właściwości poniżej w TextView
android: gravity = "center" dla centrum tekstowego w TextView.
android: gravity = "center_horizontal" tekst wewnętrzny, jeśli chcesz wyśrodkować go poziomo.
android: gravity = "center_vertical" tekst wewnętrzny, jeśli chcesz wyśrodkować go pionowo.
android: layout_centerInParent = "true", jeśli chcesz TextView w środkowej pozycji widoku nadrzędnego. android: layout_centerHorizontal = "true", jeśli chcesz TextView w poziomo pośrodku widoku rodzica. android: layout_centerVertical = "true", jeśli chcesz TextView w pionowym środku widoku rodzica.
Btw, z jakiegoś powodu cofnąłeś się do poprzedniej wersji? Wersja, którą cofnąłeś, jest dobrą praktyką, tak jak wspomniała redaktor, może pomóc edytorom tekstu w kodowaniu.
Odpowiedzi:
Zakładam, że używasz układu XML.
Możesz także użyć grawitacji
center_vertical
lubcenter_horizontal
zgodnie z potrzebami.i jak skomentował @stealthcopter w java:
.setGravity(Gravity.CENTER);
źródło
android:gravity="center"
). Nadal pokazuje się po lewej stronie ekranu. :(android:layout_gravity="center"
, co robi coś innego.To załatwi sprawę
źródło
Możesz również skonfigurować go dynamicznie, używając:
źródło
Działa to w połączeniu z RelativeLayout, w którym wysokość i szerokość układu są ustawione na wrap_content.
źródło
TextView
. Tekst będzie w pełnej szerokości i będzie zawierał wiele wierszy, a LEWO będzie wyjustowanyTextView
. Na wyświetlaczu pojawi się z wyrównaniem do lewej. Powinieneś użyć „grawitacji” określonej w innych odpowiedziach.Możesz także użyć kombinacji:
Następnie, jeśli szerokość widoku tekstu jest większa niż „fill_parent”, tekst będzie nadal wyrównany do lewej (nie wyśrodkowany, jak w przypadku grawitacji ustawionej tylko na „środek”).
źródło
Zastosuj grawitację:
Dla pionu:
W XML:
źródło
Można to zrobić na dwa sposoby.
Pierwszy w kodzie XML. Musisz zwrócić uwagę na
Gravity
Atrybut. Ten atrybut można również znaleźć w Edytorze graficznym; może być łatwiejsze niż EDYTOR XML.W przypadku konkretnego scenariusza wartości grawitacji będą następujące:
W edytorze graficznym znajdziesz wszystkie możliwe wartości, a nawet zobaczysz ich wyniki.
źródło
Jeśli używasz TableLayout, upewnij się, że grawitacja TableRows również jest wyśrodkowana. W przeciwnym razie to nie zadziała. Przynajmniej nie działało to ze mną, dopóki nie ustawiłem grawitacji TableRow na środku.
Na przykład:
źródło
Musisz ustawić TextView Gravity (środek w poziomie i środek w pionie) w następujący sposób:
i
I dynamicznie za pomocą:
źródło
layout_centerhorizontal
ilayout_centervertical
przezlayout_centerHorizontal
ilayout_centerVertical
(„H” i „V” na wielkie litery, w przeciwnym razie nie zadziała).W mojej opinii,
jest lepszy niż,
co jest lepsze niż
przynajmniej do formatowania tekstu.
źródło
Dla układu liniowego: w XML użyj czegoś takiego
Aby to zrobić w czasie wykonywania, użyj czegoś takiego w swojej aktywności
Dla układu względnego: w XML użyj czegoś takiego
Aby to zrobić w czasie wykonywania, użyj czegoś takiego w swojej aktywności
źródło
Użyj w pliku XML.
Plik układu
lub:
Użyj tego w klasie Java
źródło
Użyj tego dla względnego układu
i dla innego układu
źródło
Jeśli
TextView's
wysokość i szerokość sąwrap content
tekstem, wówczas tekstTextView
zawsze będzie wyśrodkowany. Ale jeśliTextView's
szerokośćmatch_parent
i wysokość tomatch_parent
czywrap_content
potem trzeba napisać poniższy kod:Dla RelativeLayout:
W przypadku LinearLayout:
źródło
Podczas korzystania z grawitacji działa w TextView, istnieje alternatywna metoda zaimplementowana na poziomie API 17 -
Nie znam różnicy, ale to też działa. Jednak tylko dla API poziomu 17 lub wyższego.
źródło
W
RelativeLayout
będzie miło z tym.I jeszcze jedno
Button
i wszystko, co możesz dodać.Poniższe działa dla mnie ładnie.
źródło
Najłatwiejszym sposobem (który jest zaskakująco wspomniany tylko w komentarzach, dlatego zamieszczam jako odpowiedź) jest:
źródło
Możesz po prostu ustawić
gravity
swój widok tekstu naCENTER
.źródło
Jeśli próbujesz wyśrodkować tekst na TableRow w TableLayout, oto jak to osiągnąłem:
źródło
Posługiwać się
android:textAlignment="center"
źródło
Oto moja odpowiedź, której użyłem w mojej aplikacji. Pokazuje tekst na środku ekranu.
źródło
Jeśli używasz układu względnego:
Jeśli korzystasz z LinearLayout
źródło
Jak sugeruje wiele odpowiedzi powyżej, działa dobrze.
Jeśli chcesz wyśrodkować go tylko pionowo:
lub tylko poziomo:
źródło
Po prostu w pliku XML ustaw grawitację widoku tekstu na środek:
źródło
Możesz to zrobić, aby wyśrodkować tekst
źródło
Wysokość i szerokość TextView to zawijanie zawartości, a następnie tekst w widoku tekstowym jest zawsze wyśrodkowany, a następnie wyśrodkuj układ macierzysty, używając:
W przypadku LinearLayout również kod jest taki sam:
a nadprogramowo nadrzędny jest kod Java RelativeLayout. W czasie wykonywania użyj czegoś takiego w swojej aktywności
źródło
Możemy to osiągnąć na wiele sposobów:
źródło
Grawitacja TextView działa zgodnie z układem nadrzędnym.
Układ liniowy :
Jeśli użyjesz LinearLayout, znajdziesz dwa atrybuty grawitacji android: gravity i android: layout_gravity
android: grawitacja: reprezentuje miksturę układu tekstu wewnętrznego TextView, podczas gdy android: grawitacja układu: reprezentuje pozycję TextView w widoku rodzica.
Jeśli chcesz ustawić tekst poziomo i pionowo na środku, użyj poniższego kodu
RelativeLayout :
Za pomocą RelativeLayout można użyć właściwości poniżej w TextView
android: gravity = "center" dla centrum tekstowego w TextView.
android: gravity = "center_horizontal" tekst wewnętrzny, jeśli chcesz wyśrodkować go poziomo.
android: gravity = "center_vertical" tekst wewnętrzny, jeśli chcesz wyśrodkować go pionowo.
android: layout_centerInParent = "true", jeśli chcesz TextView w środkowej pozycji widoku nadrzędnego. android: layout_centerHorizontal = "true", jeśli chcesz TextView w poziomo pośrodku widoku rodzica. android: layout_centerVertical = "true", jeśli chcesz TextView w pionowym środku widoku rodzica.
źródło
Wypróbuj w ten sposób, to zadziała
źródło
W rzeczywistości możemy to zrobić lepiej, wykluczając fontPadding.
źródło