Setzen Sie sowohl layout_width als auch layout_height auf fill_parent und setzen Sie dann die Schwerkraft auf center. Das wird den Trick machen
Amila
2
fill_parent ist jetzt veraltet. Verwenden Sie daher MATCH_PARENT in layout_width und layout_height und setzen Sie die Schwerkraft der TextView auf center.
Bilal Ahmad
Antworten:
3086
Ich gehe davon aus, dass Sie XML-Layout verwenden.
Die Textansicht muss match_parent oder fill_parent sein, damit dies funktioniert. Wenn sein Wrap-Inhalt, wird es nicht zentriert.
Kalel Wade
7
@KalelWade: Das Zentrieren von Text in einer Textansicht mit wrap_content macht überhaupt keinen Sinn. Vielleicht möchten Sie eine Textansicht in einer übergeordneten Ansicht zentrieren. In diesem Fall fügen Sie diese Zeile einfach in die übergeordnete Ansicht ein.
Mooing Duck
@Mooing Duck Der Grund, keinen Wrap-Inhalt zu verwenden - macht keinen Sinn. Aber wenn Sie entweder fertig werden und einfügen oder nur eilen, können Sie möglicherweise nicht zwei und zwei zusammenfügen. Deshalb habe ich es erwähnt.
Kalel Wade
1
Wenn sich TextView mit Breite und Höhe gleich "wrap_content" in LinearLayout mit Breite und Höhe "match_parent" befindet, müssen Sie die layout_gravity von Linear_layout festlegen.
Faisal Naseer
1
@MooingDuck, wenn die Höhe "wrap_content" und die Schwerkraft "center_vertical" ist, wird Design (Vorschau) als zentriert gezeichnet, aber in einem Gerät wird es oben positioniert. Machen Sie also die Höhe "match_parent" und setzen Sie die Schwerkraft auf "center_vertical" oder "center".
CoolMind
297
Sie können es auch dynamisch einrichten, indem Sie:
Oder einfach textview.setGravity (Gravity.CENTER);
Amplify91
Nach welchen Kriterien kann beurteilt werden, welcher Weg gewählt, in XML oder in eine Java-Datei geschrieben werden soll?
Kenju
2
@ Kenju, wenn Sie möchten, dass es leicht bearbeitet werden kann und sich der Wert zur 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.
Gustavo Maciel
2
@GustavoMaciel also, im Grunde genommen XML, es sei denn, es muss dynamisch geändert werden ... Jetzt habe ich es. Vielen Dank für Ihre einfache und nützliche Antwort!
Kenju
115
android:layout_centerInParent="true"
Dies funktioniert bei Verwendung mit einem RelativeLayout, bei dem Höhe und Breite des Layouts auf wrap_content festgelegt sind.
Dadurch wird die Textansicht zentriert, nicht der darin enthaltene Text.
Anthropomo
2
Dies funktioniert NICHT, wenn in der Datei ein Zeilenumbruch vorhanden ist TextView. Der Text ist in voller Breite und mehrzeilig und linksbündig innerhalb der TextView. Es erscheint linksbündig auf dem Display. Sie sollten "Schwerkraft" verwenden, wie in den anderen Antworten angegeben.
David Manpearl
83
Sie können auch die Kombination verwenden:
android:gravity="left|center"
Wenn die Breite der Textansicht größer als "fill_parent" ist, wird der Text weiterhin nach links ausgerichtet (nicht zentriert, da die Schwerkraft nur auf "center" gesetzt ist).
Der erste im XML-Code. Sie müssen auf das GravityAttribut achten . Sie finden dieses Attribut auch im Grafikeditor. Es ist möglicherweise einfacher als der XML-EDITOR.
Wenn Sie TableLayout verwenden, stellen Sie sicher, dass auch die Schwerkraft der TableRows auf Mitte eingestellt ist. Sonst funktioniert es nicht. Zumindest hat es bei mir nicht funktioniert, bis ich die Schwerkraft der TableRow auf Mitte gestellt habe.
Codesemantik ist falsch. Ersetzen Sie layout_centerhorizontalund layout_centerverticaldurch layout_centerHorizontalund layout_centerVertical("H" und "V" in Großbuchstaben, sonst funktioniert es nicht).
Yugidroid
2
layout_ * teilt dem übergeordneten Element der Ansicht mit, wo es sein möchte. Ohne layout_ * teilt der Ansicht mit, wie ihre Komponenten platziert werden sollen
Für lineares Layout: Verwenden Sie in XML so etwas
<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"/>
Verwenden Sie dazu zur Laufzeit so etwas in Ihrer Aktivität
Für das relative Layout: Verwenden Sie in XML Folgendes
<TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_centerInParent="true"android:text="Your Text goes here"/>
Verwenden Sie dazu zur Laufzeit so etwas in Ihrer Aktivität
Wenn die TextView'sHöhe und Breite sind, wrap contentwird der Text innerhalb der TextViewimmer zentriert. Aber wenn die TextView'sBreite match_parentund Höhe ist match_parentoder wrap_contentdann müssen Sie den folgenden Code schreiben:
Dadurch wird der Text in der Textansicht wirklich zentriert. Wenn Sie nur die Schwerkraft verwenden, gibt es je nach Text eine leichte Nachfüllung. Wenn Sie beispielsweise ein kleines Kreisabzeichen mit Text in der Mitte haben, können Sie einen sehr offensichtlichen Unterschied feststellen.
Tarrball
14
In RelativeLayoutwird es schön damit sein.
Und noch eine Buttonund alles andere, was Sie hinzufügen können.
Das Folgende funktioniert gut für mich.
<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>
Wenn Sie versuchen, Text in einem TableLayout auf einer TableRow zu zentrieren, habe ich Folgendes erreicht:
<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" erledigt den Job erst, wenn die TextView die Dimensionen match_parent hat
SAurabh
Das obige Beispiel von @SAurabh funktioniert ohne Probleme.
Chathura Wijesinghe
Funktioniert es ohne Schwerkraft für die Eltern- oder Layout-Schwerkraft an sich? Die Textausrichtung richtet den Text nicht innerhalb seiner Ansichtsgrenzen aus. Bis die textView in diesem Fall match_parent annimmt, sieht es ohne Schwerkraft im übergeordneten Layout oder layout_gravity an sich nicht so aus
SAurabh
9
Hier ist meine Antwort, die ich in meiner App verwendet hatte. Es zeigt Text in der Mitte des Bildschirms.
Die Höhe und Breite der Textansicht sind Umbruchinhalte. Der Text in der Textansicht wird immer zentriert. Machen Sie dann die Mitte im übergeordneten Layout, indem Sie Folgendes verwenden:
Die Schwerkraft von TextView funktioniert gemäß Ihrem übergeordneten Layout.
LinearLayout :
Wenn Sie LinearLayout verwenden, finden Sie zwei Schwerkraftattribute android: Schwerkraft & android: layout_gravity
android: Schwerkraft: stellt den Layouttrank des internen Textes von TextView dar, während android: layout_gravity: die Position von TextView in der übergeordneten Ansicht darstellt.
Wenn Sie Text horizontal und vertikal zentrieren möchten, verwenden Sie diesen Code
Mit RelativeLayout können Sie die folgende Eigenschaft in TextView verwenden
Android: Schwerkraft = "Zentrum" für Textzentrum in TextView.
android :vity = "center_horizontal" innerer Text, wenn Sie horizontal zentriert sein möchten.
android :vity = "center_vertical" innerer Text, wenn Sie vertikal zentriert werden möchten.
android: layout_centerInParent = "true", wenn TextView in der Mittelposition der übergeordneten Ansicht angezeigt werden soll. android: layout_centerHorizontal = "true", wenn TextView horizontal in der Mitte der übergeordneten Ansicht angezeigt werden soll. android: layout_centerVertical = "true", wenn TextView vertikal in der Mitte der übergeordneten Ansicht angezeigt werden soll.
Übrigens, haben Sie aus irgendeinem Grund einen Rollback auf die vorherige Revision durchgeführt? Die von Ihnen zurückgesetzte Revision ist eine bewährte Methode, damit Texteditoren, wie vom Editor erwähnt, bei der Codierung helfen können.
Edric
5
Versuchen Sie es auf diese Weise, es wird funktionieren
Antworten:
Ich gehe davon aus, dass Sie XML-Layout verwenden.
Sie können auch die Schwerkraft
center_vertical
odercenter_horizontal
je nach Bedarf verwenden.und wie @stealthcopter in Java kommentierte:
.setGravity(Gravity.CENTER);
quelle
android:gravity="center"
). Es wird immer noch ganz links auf dem Bildschirm angezeigt. :(android:layout_gravity="center"
etwas anderem.Dies wird den Trick tun
quelle
Sie können es auch dynamisch einrichten, indem Sie:
quelle
Dies funktioniert bei Verwendung mit einem RelativeLayout, bei dem Höhe und Breite des Layouts auf wrap_content festgelegt sind.
quelle
TextView
. Der Text ist in voller Breite und mehrzeilig und linksbündig innerhalb derTextView
. Es erscheint linksbündig auf dem Display. Sie sollten "Schwerkraft" verwenden, wie in den anderen Antworten angegeben.Sie können auch die Kombination verwenden:
Wenn die Breite der Textansicht größer als "fill_parent" ist, wird der Text weiterhin nach links ausgerichtet (nicht zentriert, da die Schwerkraft nur auf "center" gesetzt ist).
quelle
Schwerkraft anwenden:
Für vertikale:
In XML:
quelle
Es gibt zwei Möglichkeiten, dies zu tun.
Der erste im XML-Code. Sie müssen auf das
Gravity
Attribut achten . Sie finden dieses Attribut auch im Grafikeditor. Es ist möglicherweise einfacher als der XML-EDITOR.Für Ihr spezifisches Szenario sind die Schwerkraftwerte:
Im grafischen Editor finden Sie alle möglichen Werte, sogar deren Ergebnisse.
quelle
Wenn Sie TableLayout verwenden, stellen Sie sicher, dass auch die Schwerkraft der TableRows auf Mitte eingestellt ist. Sonst funktioniert es nicht. Zumindest hat es bei mir nicht funktioniert, bis ich die Schwerkraft der TableRow auf Mitte gestellt habe.
Zum Beispiel so:
quelle
Sie müssen die TextView-Schwerkraft (Mitte horizontal und Mitte vertikal) wie folgt einstellen :
und
Und dynamisch mit:
quelle
layout_centerhorizontal
undlayout_centervertical
durchlayout_centerHorizontal
undlayout_centerVertical
("H" und "V" in Großbuchstaben, sonst funktioniert es nicht).Meiner Meinung nach,
ist besser als,
das ist besser als,
Zumindest zum Formatieren von Text.
quelle
Für lineares Layout: Verwenden Sie in XML so etwas
Verwenden Sie dazu zur Laufzeit so etwas in Ihrer Aktivität
Für das relative Layout: Verwenden Sie in XML Folgendes
Verwenden Sie dazu zur Laufzeit so etwas in Ihrer Aktivität
quelle
Verwendung in der XML-Datei.
Layoutdatei
oder:
Verwenden Sie dies innerhalb der Java-Klasse
quelle
Verwenden Sie dies für das relative Layout
und für anderes Layout
quelle
Wenn die
TextView's
Höhe und Breite sind,wrap content
wird der Text innerhalb derTextView
immer zentriert. Aber wenn dieTextView's
Breitematch_parent
und Höhe istmatch_parent
oderwrap_content
dann müssen Sie den folgenden Code schreiben:Für RelativeLayout:
Für LinearLayout:
quelle
Während die Verwendung der Schwerkraft für TextView funktioniert, ist in API-Ebene 17 eine alternative Methode implementiert:
Ich kenne den Unterschied nicht, aber es funktioniert auch. Jedoch nur für API Level 17 oder höher.
quelle
In
RelativeLayout
wird es schön damit sein.Und noch eine
Button
und alles andere, was Sie hinzufügen können.Das Folgende funktioniert gut für mich.
quelle
Der einfachste Weg (der überraschenderweise nur in Kommentaren erwähnt wird, weshalb ich als Antwort poste) ist:
quelle
Sie können einfach die
gravity
Ihrer Textansicht in einstellenCENTER
.quelle
Wenn Sie versuchen, Text in einem TableLayout auf einer TableRow zu zentrieren, habe ich Folgendes erreicht:
quelle
Verwenden
android:textAlignment="center"
quelle
Hier ist meine Antwort, die ich in meiner App verwendet hatte. Es zeigt Text in der Mitte des Bildschirms.
quelle
Wenn Sie das relative Layout verwenden:
Wenn Sie LinearLayout verwenden
quelle
Wie viele Antworten oben vermuten lassen, funktioniert das einwandfrei.
Wenn Sie es nur vertikal zentrieren möchten:
oder nur horizontal:
quelle
Stellen Sie in Ihrer XML-Datei einfach die Schwerkraft der Textansicht auf Mitte ein:
quelle
Sie können dies tun, um den Text zu zentrieren
quelle
Die Höhe und Breite der Textansicht sind Umbruchinhalte. Der Text in der Textansicht wird immer zentriert. Machen Sie dann die Mitte im übergeordneten Layout, indem Sie Folgendes verwenden:
Für LinearLayout ist auch der Code derselbe:
und pro-grammatisch übergeordnet ist RelativeLayout Java-Code. Verwenden Sie zur Laufzeit so etwas in Ihrer Aktivität
quelle
Wir können dies auf verschiedene Arten erreichen:
quelle
Die Schwerkraft von TextView funktioniert gemäß Ihrem übergeordneten Layout.
LinearLayout :
Wenn Sie LinearLayout verwenden, finden Sie zwei Schwerkraftattribute android: Schwerkraft & android: layout_gravity
android: Schwerkraft: stellt den Layouttrank des internen Textes von TextView dar, während android: layout_gravity: die Position von TextView in der übergeordneten Ansicht darstellt.
Wenn Sie Text horizontal und vertikal zentrieren möchten, verwenden Sie diesen Code
RelativeLayout :
Mit RelativeLayout können Sie die folgende Eigenschaft in TextView verwenden
Android: Schwerkraft = "Zentrum" für Textzentrum in TextView.
android :vity = "center_horizontal" innerer Text, wenn Sie horizontal zentriert sein möchten.
android :vity = "center_vertical" innerer Text, wenn Sie vertikal zentriert werden möchten.
android: layout_centerInParent = "true", wenn TextView in der Mittelposition der übergeordneten Ansicht angezeigt werden soll. android: layout_centerHorizontal = "true", wenn TextView horizontal in der Mitte der übergeordneten Ansicht angezeigt werden soll. android: layout_centerVertical = "true", wenn TextView vertikal in der Mitte der übergeordneten Ansicht angezeigt werden soll.
quelle
Versuchen Sie es auf diese Weise, es wird funktionieren
quelle
Eigentlich können wir es besser machen, indem wir fontPadding ausschließen.
quelle