Android — центрировать текстовое представление по горизонтали в LinearLayout

#android #android-layout #android-linearlayout #layout-gravity

#Android #android-макет #android-linearlayout #макет-гравитация

Вопрос:

У меня следующий базовый макет

 <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 правильный, но текст выровнен по левому краю. Текстовое представление занимает всю ширину родительского элемента, а текстовое представление установлено по центру. Не уверен, в чем проблема…

Комментарии:

1. попробуйте android: gravity =»center» для вашего текстового представления

Ответ №1:

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

Комментарии:

1. Если я правильно понимаю, он мог бы изменить «android: layout_width=»fill_parent» на «wrap_content», а затем использовать android:layout_gravity =»center_horizontal». Я прав?

2. @bluesm Нет, внутренний LinearLayout не позволяет себе иметь пространство, которое не заполнено представлением (не считая случая пустого LinearLayout). Таким образом android:layout_width , значение будет иметь то же значение (после компоновки). Поскольку ширина текстового представления равна с внутреннего линейного представления, текстовое представление фактически имеет android:layout_gravity значения left , right , и center в то же время.

3. Для ImageView его layout_gravity и для TextView его gravity — это то, что работает только . Android — это здорово ! Спасибо всем прекрасным постам SO, без которых разработка была просто невозможна.

4. не забывайте о android:layout_width="match_parent"

Ответ №2:

Если вы устанавливаете <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>
  

Ответ №3:

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

Ответ №4:

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

Комментарии:

1. Короткий и точный ответ. Спасибо

Ответ №5:

Просто используйте: android:layout_centerHorizontal=»true»

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