Як центрувати дворядковий текст у TextView на Android?


79

Я хочу дозволити це виглядати так:

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

Будь-яка ідея? Дякую!

Відповіді:


219

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


19

Довелося додати обидва gravityі layout_gravityвирівняти обидва TextViewі його зміст

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

3

якщо ваша ширина 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"/>

Сподіваюся, це допоможе!


Дякую. Це працює. Встановлення як «гравітації», так і «layout_gravity» зробило для мене фокус.
Прасанна Рамасвамі,

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 по центру, він лише змушує його мати два рядки. І все-таки ця відповідь не така вже й погана, її потрібно проголосувати.
Шишдем

Це не вплине на запит. Вирівнювання не буде по центру.
deva11
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.