выровнять текстовый центр с Android

150

Я знаю, это звучит легко. Мне нужно поместить текст по центру, но когда текст слишком длинный, он должен быть ниже, но по-прежнему выравниваться по центру моего xml.

Вот мой код:

 <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/showdescriptioncontenttitle"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:layout_centerHorizontal="true"
>
    <TextView 
        android:id="@+id/showdescriptiontitle"
        android:text="Title"
        android:textSize="35dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />
</LinearLayout>

Я поставил paddingTop и Bottom, потому что мне нужно немного места. PS: мой код больше; это в RelativeLayout.

Tsunaze
источник
Здесь вы не использовали какой-либо стиль текста
Dinith

Ответы:

381

Также установите android:gravityпараметр TextViewв center.

Для тестирования эффектов различных параметров макета я рекомендую использовать разные цвета фона для каждого элемента, чтобы вы могли видеть, как меняется ваш макет с такими параметрами, как gravity, layout_gravity или другими.

peter.bartos
источник
Спасибо, это сработало, просто нужно время, чтобы подтвердить свой ответ!
Цуназе
Да, это правда. Но я думаю, только если TextView имеет более одной строки. Поскольку только 1 не полная строка текста, TextView не будет заполнять макет по горизонтали
peter.bartos
Вы можете избежать этого, установив Android в TextView: layout_width = "fill_parent"
peter.bartos
2
Не путать с android:layout_gravity. Doh! :)
Джошуа Пинтер
29

использовать этот способ

txt.setGravity(Gravity.CENTER);
bhargavkumar040
источник
21

использовать этот способ в XML

   <TextView
        android:id="@+id/myText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Time is precious, so love now."
        android:gravity="center"
        android:textSize="30dp"
        android:textColor="#fff"
        />
сакши
источник
7

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

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/showdescriptioncontenttitle"
    android:paddingTop="10dp"
    android:paddingBottom="10dp">

 <TextView
        android:id="@+id/textview1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Your text"
        android:typeface="serif" />
</LinearLayout>

Расположение должно быть относительным для свойства "center", которое будет использоваться.

GSB
источник
5

Добавление android:gravity="center"в ваш TextView поможет (будь родительский макет Relative/Linear)!

Кроме того, вы должны избегать использования dp для размера шрифта. Вместо этого используйте sp.

Дивья
источник
3

добавить layout_gravity и гравитацию с центральным значением в TextView

<TextView
    android:text="welcome text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    />
Мубин
источник
2

Просто добавьте эти 2 строки;

android:gravity="center_horizontal"
android:textAlignment="center"
Рамандип Сингх
источник
1
android:layout_gravity="center"

или

android:gravity="center"

у меня оба работают.

Dinith
источник