2015-07-24 1 views
1

Далее желтые и терракотовые стержни представляют собой горизонтальные линейные макеты, каждый из которых содержит изображение с layout_gravity="center_horizontal".Почему одному ребенку горизонтальной линейной компоновки нужен вес, который должен быть центрирован по горизонтали?

Почему изображение верхнего изображения не поэтому горизонтально центрировано, несмотря на то, что его настройка layout_gravity является горизонтальной?

Для того, чтобы изображение было ориентировано по горизонтали, мне пришлось добавить layout_weight из 1 (терракотовый бар). Но я не понимаю, почему это так, почему не указывается layout_gravitycenter_horizontal, достаточный для центрирования изображения?

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

enter image description here

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:orientation="vertical" 
    tools:context=".MainActivity" tools:deviceIds="wear_square" 
    android:weightSum="1"> 

    <LinearLayout 
     android:id="@+id/Horizontal_LL_1" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#f3ff36"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="40dp" 
      android:id="@+id/imageViewHLL1" 
      android:layout_gravity="center_horizontal" 
      android:src="@drawable/pizzahut" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/Horizontal_LL_2" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#ff4c44"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="40dp" 
      android:id="@+id/imageViewHLL2" 
      android:layout_weight="1" 
      android:layout_gravity="center_horizontal" 
      android:src="@drawable/pizzahut" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/Horizontal_LL_3" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#ff39e3"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="40dp" 
      android:id="@+id/imageViewHLL3a" 
      android:layout_weight="1" 
      android:src="@drawable/pizzahut" /> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="40dp" 
      android:id="@+id/imageViewHLL3b" 
      android:layout_weight="1" 
      android:src="@drawable/pizzahut" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/Vertical_LL_1" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:background="#9eff9a"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="40dp" 
      android:id="@+id/imageViewVLL1" 
      android:layout_gravity="center_horizontal" 
      android:src="@drawable/pizzahut" /> 
    </LinearLayout> 

</LinearLayout> 
+0

Я думаю, вы пропустили layout_weight = 1 для первого параметра –

+0

Я не знаю, что вы имеете в виду. Если вы имеете в виду, что нет в imageViewHLL1, то это то, о чем мой вопрос конкретно. Цитата: «Чтобы изображение было ориентировано горизонтально, мне пришлось добавить layout_weight из 1. Но я не понимаю, почему это так» – Gruntcakes

ответ

0

Это не нужно. Вы можете просто установить android:gravity="center_horizontal" на LinearLayout.

Если вы этого не сделаете, представления будут уложены слева по умолчанию. Если вы укажете вес 1, пространство, выделенное для представления, будет представлять собой полную ширину LinearLayout, а затем layout_gravity позволяет выровнять представление внутри этого выделенного пространства.

Смежные вопросы