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.