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!

Shiami
quelle

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.

Kevin Coppock
quelle
19

Musste beide hinzufügen gravityund layout_gravitybeide TextViewund seinen Inhalt ausrichten

android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"
kishor.j
quelle
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!

Shivam
quelle
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"));
Dleelk4android
quelle
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"));
Cristian
quelle
1

Ich benutze:

android:gravity="center_horizontal"

zweizeiligen Text zentrieren

Dea Venditama
quelle
-3

Eigenschaft hinzufügen

android:lines="2"

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

Siddhartha
quelle
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