Wie zentriere ich einen zweizeiligen Text in einer Textansicht unter Android?


79

Ich möchte, dass es so aussieht:

|    two    |
|   lines   |

Hier ist das aktuelle Layout, das überhaupt nicht funktioniert.

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="two\nlines"
        android:layout_gravity="center_vertical"
        android:layout_centerInParent="true"/>
</RelativeLayout>

Irgendeine Idee? Vielen Dank!

Antworten:


219

Wenn Sie es nur zentrieren möchten (ich gehe davon aus, dass \nes funktioniert, um die Linien zu teilen), fügen Sie einfach android:gravity="center_horizontal"statt layout_gravity.
Durch die Verwendung der Layoutgravitation wird die tatsächliche Textansicht verschoben. Die Verwendung der Schwerkraft wirkt sich auf den Inhalt der Textansicht aus.


19

Musste beide hinzufügen gravityund layout_gravitybeide TextViewund seinen Inhalt ausrichten

android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"

3

Wenn Ihre Breite wrap_content ist, müssen Sie Schwerkraft und layout_gravity als "center_horizontal" festlegen.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="two\nlines"
    android:layout_gravity="center_horizontal"
    android:gravity="center_horizontal"/>

Wenn Ihre Breite jedoch "match_parent" ist, müssen Sie nur die Schwerkraft als "center_horizontal" festlegen.

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="two\nlines"
    android:gravity="center_horizontal"/>

Ich hoffe es hilft!


Vielen Dank. Das funktioniert. Das Einstellen von 'Schwerkraft' und 'layout_gravity' hat den Trick für mich getan.
— Prasanna Ramaswamy

2

Sie können verwenden:

TextView tv = (TextView) findViewById(R.id.the_text_view);
tv.setText(Html.fromHtml("two"+"\n"+"lines"));

1

Ich denke, Sie müssen es von Java aus tun:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical">
    <TextView
        android:id="@+id/the_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_centerInParent="true"/>
</RelativeLayout>

Dann:

TextView tv = (TextView) findViewById(R.id.the_text_view);
tv.setText(Html.fromHtml("two<br/>lines"));

1

Ich benutze:

android:gravity="center_horizontal"

zweizeiligen Text zentrieren


-3

Eigenschaft hinzufügen

android:lines="2"

Wenn 2 keine Zeilen ist, können Sie diese Nr. als Ihre Anforderung festlegen


1
Dadurch wird die Textansicht nicht zentriert, sondern es werden nur zwei Zeilen erzwungen. Trotzdem ist diese Antwort nicht so schlecht, dass sie herabgestuft werden muss.
— Shishdem

Es wird keine Auswirkungen wie gewünscht haben. Die Ausrichtung wird nicht zentriert.
— Deva11
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.