2325 Stimmen

Wie zentriere ich Text horizontal und vertikal in einer TextView?

Wie zentriere ich den Text horizontal und vertikal in einer TextView so dass es genau in der Mitte des Bildes erscheint. TextView in Android ?

15 Stimmen

Sowohl layout_width als auch layout_height auf fill_parent setzen, dann gravity auf center setzen. Das wird den Trick machen

5 Stimmen

Fill_parent ist jetzt veraltet, also verwenden Sie MATCH_PARENT in layout_width und layout_height und setzen Sie die Schwerkraft des TextViews auf Zentrum.

3426voto

Bill Punkte 33794

Ich gehe davon aus, dass Sie das XML-Layout verwenden.

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

Sie können auch die Schwerkraft nutzen center_vertical ou center_horizontal je nach Bedarf.

Wie @stealthcopter kommentierte, in Java: .setGravity(Gravity.CENTER); .

Und für Kotlin-Benutzer, .gravity = Gravity.CENTER

66 Stimmen

Dies funktioniert nicht in Verbindung mit einem RelativeLayout, bei dem die Höhe und Breite des Layouts auf wrap_content eingestellt sind

110 Stimmen

@Rob, wenn die Breite und Höhe wrap_content sind, dann ist der Text technisch gesehen bereits zentriert.

4 Stimmen

Wenn ich TextView relativ zu einer anderen Ansicht ausrichten möchte, der Text aber in sich selbst zentriert ist?

489voto

Jean Punkte 4747
android:gravity="center" 

So geht's

37 Stimmen

Die Textansicht muss match_parent oder fill_parent sein, damit dies funktioniert. Wenn seine wrap Inhalt, dann wird es nicht zentrieren.

9 Stimmen

@KalelWade: Das Zentrieren von Text in einer Textansicht mit wrap_content macht überhaupt keinen Sinn. Vielleicht denkst du an die Zentrierung einer Textansicht in einer übergeordneten Ansicht, in diesem Fall setzt du einfach diese Zeile in die übergeordnete Ansicht.

1 Stimmen

@Mooing Duck Das ist der Grund, warum man keinen Wrap-Content verwenden sollte - es macht keinen Sinn. Aber wenn man entweder kopiert und einfügt oder einfach nur in Eile ist, kann man vielleicht nicht zwei und zwei zusammenzählen. Deshalb habe ich es ja erwähnt.

315voto

zeevb Punkte 3139

Sie können sie auch dynamisch einrichten:

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

145 Stimmen

Oder einfach textview.setGravity(Gravity.CENTER);

1 Stimmen

Nach welchen Kriterien wird entschieden, ob eine Xml- oder eine Java-Datei geschrieben werden soll?

3 Stimmen

@Kenju, wenn Sie möchten, dass es leicht editierbar ist und sich der Wert während der Laufzeit nicht ändert: XML. Wenn Sie den Wert in Echtzeit ändern müssen (z. B. die Ausrichtung ändern, wenn der Benutzer eine Taste drückt), können Sie dies nur über Java tun.

127voto

itherese Punkte 1245
android:layout_centerInParent="true"

Dies funktioniert in Verbindung mit einem RelativeLayout, bei dem die Höhe und Breite des Layouts auf wrap_content eingestellt sind.

22 Stimmen

Dies zentriert die TextView, nicht den Text darin.

3 Stimmen

Dies funktioniert NICHT, wenn ein Wortumbruch in der TextView . Der Text wird in voller Breite und mehrzeilig UND LINKSbündig innerhalb der TextView . Sie wird linksbündig auf dem Display angezeigt. Sie sollten "Schwerkraft" verwenden, wie in den anderen Antworten angegeben.

89voto

Szorstki Punkte 1364

Sie können auch die Kombination verwenden:

android:gravity="left|center"

Wenn die Breite der Textansicht größer ist als die Breite von "fill_parent", wird der Text trotzdem links ausgerichtet (nicht zentriert wie bei der Einstellung "center").

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X