Android - Центр TextView горизонтально в LinearLayout - PullRequest
103 голосов
/ 04 октября 2011

У меня есть следующая базовая раскладка

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bar_background">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:padding="10dp"
        android:text="HELLO WORLD" />

    </LinearLayout>
<LinearLayout>

Кажется, что XML правильный, но текст выровнен по левому краю. Текстовое представление занимает всю ширину родительского элемента, а текстовое представление устанавливается по центру. Не уверен в чем проблема ...

Ответы [ 5 ]

215 голосов
/ 04 октября 2011

Происходит следующее: поскольку TextView заполняет целую ширину внутреннего LinearLayout, он уже находится в горизонтальном центре макета .Когда вы используете android:layout_gravity, он помещает виджет в целом в заданную силу тяжести.Вместо того, чтобы помещать весь центр виджетов, вы действительно пытаетесь поместить контент в центр, что можно сделать с помощью android:gravity="center_horizontal", а атрибут android:layout_gravity можно удалить.

22 голосов
/ 04 октября 2011
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bar_background">

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:padding="10dp"
    android:text="HELLO WORLD" />

</LinearLayout>

20 голосов
/ 06 мая 2014

Если вы установите <TextView> в центре в <Linearlayout>, то сначала поставьте android:layout_width="fill_parent" обязательно
Нет необходимости использовать любую другую гравитацию

    <LinearLayout
            android:layout_toRightOf="@+id/linear_profile" 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:orientation="vertical"
            android:gravity="center_horizontal">
            <TextView 
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="It's.hhhhhhhh...."
                android:textColor="@color/Black"

                />
    </LinearLayout>
16 голосов
/ 04 октября 2011

Используйте android:gravity="center" в TextView вместо layout_gravity.

0 голосов
/ 24 июня 2018

Просто используйте: android: layout_centerHor horizontal = "true"

Поместит весь текстовый вид в центр

...