Pytanie Jak wyśrodkować tekst w poziomie i w pionie w widoku tekstowym?


Jak wyśrodkować tekst poziomo i pionowo w a TextView, tak, że pojawia się dokładnie w środku TextView w Android?


1688
2018-01-11 00:27


pochodzenie


ustaw zarówno szerokość układu, jak i wysokość_pustu, aby wypełnić_podpis, a następnie ustaw grawitację na środek. To wystarczy - Amila
fill_parent jest obecnie przestarzały, więc użyj MATCH_PARENT w layout_width i layout_height i ustaw grawitację TextView na środek. - Bilal Ahmad


Odpowiedzi:


Zakładam, że używasz układu XML.

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
    android:text="@string/**yourtextstring**"
/>

Możesz także użyć grawitacji center_vertical lub center_horizontal zgodnie z twoimi potrzebami.

i jako @stealthcopter skomentował w java: .setGravity(Gravity.CENTER);


2655
2018-01-11 01:53



To nie działa, gdy jest używane z RelativeLayout, gdzie wysokość i szerokość układu są ustawione na wrap_content - Rob
@Rob, jeśli szerokość i wysokość to wrap_content, to technicznie tekst jest już wycentrowany. - JoJo
Jeśli chcę wyrównać TextView względem innego widoku, ale tekst jest wycentrowany w sobie?
To nie działa dla mnie (android:gravity="center"). Nadal pokazuje się z lewej strony ekranu. :( - uSeRnAmEhAhAhAhAhA
Nie mylić z android:layout_gravity="center", który robi coś innego. - Rudi Kershaw


android:gravity="center" 

To wystarczy


398
2018-02-08 22:54



Aby to działało, textview musi być match_parent lub fill_parent. Jeśli zawartość jest zawijana, nie zostanie wyśrodkowana. - Kalel Wade
@KalelWade: wyśrodkowywanie tekstu w tekście z wrap_content nie ma żadnego sensu. Być może myślisz o wyśrodkowywaniu widoku tekstowego w widoku nadrzędnym, w takim przypadku prostym rozwiązaniem jest umieszczenie tego wiersza w elemencie nadrzędnym. - Mooing Duck
@Mooing Duck Dlatego powód, aby nie używać zawartości wrap - to nie ma sensu. Ale kiedy jesteś albo radzenia sobie i wklejania lub po prostu pędzi, nie może umieścić dwa i dwa razem. Dlatego o tym wspomniałem. - Kalel Wade
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", to musisz ustawić układ_grawitacji Linear_layout. - Faisal Naseer
@MooingDuck, gdy wysokość to "wrap_content", a grawitacja to "center_vertical", rysuje w Design (podgląd) jako wyśrodkowany, ale w urządzeniu jest ustawiona na górze. Utwórz wysokość "match_parent" i ustaw grawitację na "center_vertical" lub "center". - CoolMind


Możesz także ustawić dynamicznie za pomocą:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

268
2017-11-21 12:25



Lub po prostu textview.setGravity (Gravity.CENTER); - Amplify91
Jakie są kryteria oceny, w jaki sposób wybrać, napisać w xml lub napisać w pliku Java? - phi
@Kenju, jeśli chcesz, aby był łatwo edytowalny, a wartość nie zmieni się w czasie wykonywania: XML. Jeśli musisz zmienić wartość czasu rzeczywistego (na przykład zmień wyrównanie, gdy użytkownik naciśnie przycisk), możesz to zrobić tylko przez Javę. - Gustavo Maciel
@GustavoMaciel tak, w zasadzie xml, chyba że musi być zmodyfikowany dynamicznie ... Teraz mam to. Dziękuję za twoją prostą i przydatną odpowiedź! - phi
to czyste, dziękuję - Moritz Schmidt


android:layout_centerInParent="true"

Działa to w połączeniu z RelativeLayout, gdzie wysokość i szerokość layoutu jest ustawiona na wrap_content.


97
2017-11-11 00:58



To centralizuje TextView, a nie tekst w nim. - anthropomo
To NIE działa, gdy jest zawijanie wyrazów w TextView. Tekst będzie w pełnej szerokości i wieloliniowy ORAZ LEWO-usprawiedliwiony w ramach TextView. Pojawi się na ekranie z wyrównaniem do lewej strony. Powinieneś użyć "grawitacji", jak podano w innych odpowiedziach. - David Manpearl


Możesz także użyć kombinacji:

android:gravity="left|center"

Następnie, jeśli szerokość widoku tekstowego jest większa niż "wypełnijpoprzednia", tekst będzie wyrównany do lewej (nie wyśrodkowany jak przy grawitacji ustawionej tylko na "środek").


68
2018-01-01 20:11





Zastosuj grawitację:

TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);

Dla pionu:

txtView.setGravity(Gravity.CENTER_VERTICAL);

W XML:

<TextView      
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center"
    android:text="@string/Hello_World"        
/>

44
2018-05-30 05:34





Jeśli używasz TableLayout, ustaw grawitację TableRows również na środku. W przeciwnym razie to nie zadziała. Przynajmniej nie działało to ze mną, dopóki nie ustawiłem grawitacji TableRow na środek.

Na przykład:

<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center">        
    <TextView android:text="@string/chf" android:id="@+id/tv_chf" android:layout_weight="2" android:layout_height="wrap_content" android:layout_width="fill_parent" android:gravity="center"></TextView>        
</TableRow>

35
2018-05-13 11:57



Ciekawy. Musisz sprawdzić, czy jest to również ważne dla LinearLayout (rodzica TableRow). - Martin