从填充父级的单个FrameLayout更改为具有前一个包装到内容的双/分区

时间:2011-11-03 13:21:58

标签: android android-layout android-fragments

我有一个使用FrameLayouts的双窗格,并排布局,每个布局都有效地填充了屏幕的高度(限制边距):

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

在左侧片段中的某个选择中,虽然我想将右侧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 个答案:

答案 0 :(得分: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>