2011-11-03 44 views
0

我有一个双窗格,使用FrameLayouts进行并排布局,每个布局有效地填充屏幕高度(禁止边距) :从单个FrameLayout填充父对象变为双对象/分割对象包含顶级对象

dual pane

右`的FrameLayout”的布局如下:

<LinearLayout 
     android:id="@+id/details_frame" 
     android:layout_width="0px" 
     android:layout_height="match_parent" 
     android:layout_weight="2" 
     android:orientation="vertical"> 

    <FrameLayout android:id="@+id/details_frag" 
      android:layout_width="match_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:paddingTop="48dp"/> 

在某选择我n中的左片段虽然我想向右的FrameLayout分成两个,这样我可以把不同的片段到每个由此顶部帧包内容,而底部占据的任何剩余空间,如下所示:

Split right pane

我一直在尝试在现有的FrameLayout下添加一个新的FrameLayout,然后玩重量,高度,这与我想要的更接近,除了我想要放在detaisl_frag_lower中的片段是ListFragment并且当有比在屏幕上适合的条目多,则该列表最终被填充超出屏幕底部,而不是在可用区域内滚动:

<FrameLayout android:id="@+id/details_frag" 
      android:layout_width="match_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:paddingTop="48dp"/> 
    <FrameLayout android:id="@+id/details_frag_lower" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0"/> 

编辑 顺便说一句我充气片段插入预先每个的FrameLayout

list extending below screen 感谢。彼得。

回答

1

我会将此全部更改为LinearLayout。 layout_weight将为您填充空间。您可以通过使用ID找到它显示/隐藏红色窗格,然后设置pane.setVisibility(View.VISIBLE)(或设置View.GONE)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
     android:orientation="horizontal"> 
    <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:background="#ffff00" 
      android:orientation="vertical" 
      android:id="@+id/details_frag"> 
    <!-- Left pane content --> 
    </LinearLayout> 
    <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:background="#00ff00" 
      android:orientation="vertical"> 
    <!-- Right pane content --> 
     <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="80dp" 
       android:orientation="vertical" 
       android:background="#ff0000" 
       android:visibility="gone" 
       android:id="@+id/details_frag_upper"> 
      <!-- Initially hidden. Fill with whatever on left pane click --> 
     </LinearLayout> 
     <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:background="#0000ff" 
       android:id="@+id/details_frag_lower" 
       android:layout_weight="1"> 
      <!-- Initially hidden. Fill with whatever on left pane click --> 
     </LinearLayout> 

    </LinearLayout> 

</LinearLayout> 
+0

谢谢,我没有考虑这一点,将需要FrameLayouts作为膨胀碎片(不影响您的解决方案)。我需要测试,但宁愿如果'details_frag_upper'有一个高度'wrap_content' – PJL

+0

您可以将高度更改为wrap_content。我提供了一个固定的测试值。如果我把wrap_content放在那里,没有内容,它会是0;) –