2015-04-21 1 views
2

Я пытаюсь обернуть голову вокруг макетов Android, и я подумал, что начну с простого примера, но он почему-то не работает.Продвинутый макет Android

Я начал с простого разбиения макета на 4 блока и использования цветов фона, чтобы доказать, что он работает по назначению.

Этот код прекрасно работает для этого:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_green_light"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/white"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_orange_light"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_red_light"> 
    </RelativeLayout> 

</LinearLayout> 

Так что я хотел продолжить разбивку разделов, а также добавить два новых макетов по 2-м один, что каждый Залейте его 50% (фактически покрыв ее).

Я пробовал как LinearLayout, так и RelativeLayout, и я не могу ничего сработать.

Вот код, я прямо сейчас:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_green_light"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:orientation="horizontal" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:background="@android:color/holo_green_dark" 
      android:layout_alignParentLeft="true" > 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:background="@android:color/holo_blue_dark" 
      android:layout_alignParentRight="true" > 
     </LinearLayout> 

    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_orange_light"> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_red_light"> 
    </RelativeLayout>Layout> 

</LinearLayout> 

Я думаю, что вопрос с match_parent в суб LinearLayouts, но проблема в том, если я использую wrap_content, нет никакого содержания, чтобы они исчезают.

+1

Вы также должны использовать свойство 'android: weightSum' для родительских макетов. –

+2

Вложенные макеты весов обескуражены. –

+0

Введите некоторую высоту в относительный макет и добавьте несколько снимков экрана вашего текущего макета. Не пытайтесь использовать вложенный макет. – Codelord

ответ

5

Проверьте обновленный xml. он будет работать нормально

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:weightSum="1" 
    android:layout_height="match_parent"> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_green_light"> 
    </RelativeLayout> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:weightSum="1" 
     android:orientation="horizontal" > 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:background="@android:color/holo_green_dark" 
      android:layout_alignParentLeft="true" > 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:background="@android:color/holo_blue_dark" 
      android:layout_alignParentRight="true" > 
     </LinearLayout> 
    </LinearLayout> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_orange_light"> 
    </RelativeLayout> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="0.25" 
     android:background="@android:color/holo_red_light"> 
    </RelativeLayout> 
</LinearLayout> 

enter image description here

Я добавил weightsum тегов и изменил одну из вашей относительной компоновки для линейной компоновки

+0

Ahhhh, weightsum имеет смысл сейчас, я думал, что он автоматически делает это для макетов на одном уровне. Спасибо огромное! – Tennesseej

+0

@Tennesseej Если вы считаете, что мой ответ приемлемый и полезный, вы можете отметить его как принятый :) – deniz

3

Взгляды внутри RelativeLayout не будут иметь никакого эффекта вес имущества , Вы должны попытаться заменить RelativeLayout на LinearLayout.

+0

Это хороший момент и точный улов! –

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

  • Нет связанных вопросов^_^