如何在Android上将两行文本居中显示在TextView中?

88

我想让它看起来像这样:

|    two    |
|   lines   |

这是当前的布局,完全无法正常工作。

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

有什么想法吗? 谢谢!

7个回答

229

如果您只想将它居中(我假设 \n 能够正常换行),只需添加 android:gravity="center_horizontal" 而不是 layout_gravity


使用 layout_gravity 会移动实际的 TextView,而使用 gravity 会影响 TextView 的内容


21

必须同时添加gravitylayout_gravity以对齐TextView及其内容

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

4
如果您的宽度为wrap_content,则必须将gravity和layout_gravity同时设置为"center_horizontal"。
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="two\nlines"
    android:layout_gravity="center_horizontal"
    android:gravity="center_horizontal"/>

然而,如果您的宽度是“match_parent”,则只需将重力设置为“center_horizontal”。
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="two\nlines"
    android:gravity="center_horizontal"/>

希望这能有所帮助!

谢谢。这个有效。同时设置“gravity”和“layout_gravity”对我很有帮助。 - Prasanna Ramaswamy
这应该是被接受的答案,因为所选的答案只适用于换行符。谢谢! - Chiara

2

我使用:

android:gravity="center_horizontal"

居中两行文本


2

您可以使用:

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

1

我认为你必须从Java开始:

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

然后:

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

-3
添加属性
android:lines="2"

其中2是您可以根据需求设置的行数


1
这并不会将TextView居中,它只是强制其有两行。尽管如此,这个答案并不糟糕到需要被踩。 - Shishdem
按照要求进行的更改不会产生任何影响。对齐方式将不会居中。 - deva11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接