2016-11-14 3 views
1

Я хотел бы иметь вложенный фрагмент, который должен занимать остальную часть пространства. Проблема в том, что она даже не отображается, потому что высота равна 1 px. Если я установил высоту до 300 дп, например, все выглядит нормально. Вот мой код. Может быть, макет не может рассчитать, что высота двух других раскладок .:Вложенные фрагменты, заполняющие остальную часть пространства

  <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginTop="5dp" 
      android:orientation="vertical"> 

      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@drawable/white_with_divider_bg" 
       android:id="@+id/firstL"> 

      </RelativeLayout> 

      <RelativeLayout 
       android:id="@+id/secondL" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="5dp"> 

      </RelativeLayout> 

      <FrameLayout 
       android:id="@+id/child_fragment" 
       android:layout_height="0dip" 
       android:layout_width="match_parent" 
       android:layout_weight="1"/> 

     </LinearLayout> 

Он должен выглядеть следующим образом:

enter image description here

+0

Вместо использования всех этих вложенных макетов (плохого для характеристик и плохого дизайна) вы можете использовать один RelativeLayout. Или даже один LinearLayout (который также быстрее), в этом случае. –

+0

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

+0

Для того, что вы показали, достаточно одного LL. Если это сложнее, подумайте об использовании одного RL. –

ответ

0

При работе с весами все дети LiniearLayout должны иметь вес, но это не помогло бы вам. У вас должен быть android: id = "@ + id/child_fragment" иметь height = "match_parent" и удалить вес.

Это должно сработать.

+0

Я пробовал, и все то же самое. – charbinary

+0

Хм. Еще одно решение, которое вы можете попробовать, - это заменить LiniearLayout RelativeLayout и использовать свойства выше и ниже, которые вы можете предоставить детям. – miqueloi

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