Как центрировать двухстрочный текст в TextView на Android? - PullRequest
73 голосов
/ 25 января 2011

Я хочу, чтобы это выглядело так:

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

206 голосов
/ 25 января 2011

Если вы просто хотите отцентрировать его (я предполагаю, что \n работает для разбиения линий), просто добавьте android:gravity="center_horizontal" вместо layout_gravity.
Используя макет, гравитация перемещает фактический TextView, используягравитация влияет на содержание TextView.

12 голосов
/ 16 января 2017

Пришлось добавить оба gravity и layout_gravity, чтобы выровнять TextView и его содержимое

android:gravity="center_horizontal"
android:layout_gravity="center_horizontal"
3 голосов
/ 02 октября 2017

если ваша ширина wrap_content, вы должны установить гравитацию и 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"/>

Надеюсь, это поможет!

2 голосов
/ 09 мая 2012

Вы можете использовать:

TextView tv = (TextView) findViewById(R.id.the_text_view);
tv.setText(Html.fromHtml("two"+"\n"+"lines"));
1 голос
/ 25 января 2011

Я думаю, вы должны сделать это из 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"));
0 голосов
/ 23 марта 2018

Я использую:

android:gravity="center_horizontal"

для центрирования двухстрочного текста

0 голосов
/ 11 декабря 2014

Добавить объект

android:lines="2"

где 2 - нет строк, вы можете установить это нет как ваше требование

...