shiami
shiami

Reputation: 7264

How to center a two-line text in a TextView on Android?

I want to let it looks like this:

|    two    |
|   lines   |

Here is the current layout, not working at all.

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

Any idea? Thanks!

Upvotes: 88

Views: 58798

Answers (7)

Dea Venditama
Dea Venditama

Reputation: 43

I use:

android:gravity="center_horizontal"

to center two line text

Upvotes: 2

Shivam
Shivam

Reputation: 1116

if your width is wrap_content, you have to set gravity and layout_gravity both as "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"/>

However, if your width is "match_parent, you will only have to set gravity as "center_horizontal"

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

Hope it helps!

Upvotes: 4

kishor.j
kishor.j

Reputation: 223

Had to add both gravity and layout_gravity to align both TextView and its content

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

Upvotes: 21

Siddhartha
Siddhartha

Reputation: 27

Add property

android:lines="2"

where 2 is no of lines you can set this no as your requirment

Upvotes: -4

Kevin Coppock
Kevin Coppock

Reputation: 134684

If you just want to center it (I'm assuming the \n is working to split the lines), just add android:gravity="center_horizontal" rather than layout_gravity.
Using layout gravity moves the actual TextView, using gravity affects the content of the TextView.

Upvotes: 230

Dleelk4android
Dleelk4android

Reputation: 45

You can use:

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

Upvotes: 2

Cristian
Cristian

Reputation: 200110

I think you must do it from 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>

Then:

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

Upvotes: 1

Related Questions