具有静态和动态片段的活动布局?

时间:2014-02-16 21:09:02

标签: android android-fragments fragment

我希望创建这种类型的布局......

在左侧的xml中创建一个静态片段

在底部的xml中创建一个静态片段作为页脚

在顶部的xml中创建一个静态片段作为标题

最后

根据从外部到活动的不同广播,为运行时创建的不同动态片段的一个容器。

这是一个视觉......

fragment_layout

如何在xml中构建此活动的布局?

1 个答案:

答案 0 :(得分:1)

使用RelativeLayout放置顶部和底部片段,然后在其间添加包含List片段和最后一个动态片段的水平LinearLayout。片段的维度可以放在dimens文件中,我在xml中有硬编码的48 dp;列表区域占宽度的20%,而内容区域占用其余区域。这是让你开始的东西:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/top_fragment"
        android:name="com.adip.sampler.fragments.TopFragment"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentTop="true" />

    <fragment
        android:id="@+id/bottom_fragment"
        android:name="com.adip.sampler.fragments.BottomFragment"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/bottom_fragment"
        android:layout_below="@+id/top_fragment"
        android:baselineAligned="false"
        android:orientation="horizontal" >

        <fragment
            android:id="@+id/list_fragment"
            name="com.adip.sampler.fragments.ListFragment"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <FrameLayout
            android:id="@+id/dynamic_area"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="4" >
        </FrameLayout>
    </LinearLayout>

</RelativeLayout>

或者如果您只想拥有视图组而没有fragment标记,则可以使用此布局(您可以使用任何ViewGroup代替FrameLayout,我出于效率原因使用它:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/top_fragment"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentTop="true" />

    <FrameLayout
        android:id="@+id/bottom_fragment"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true" />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/bottom_fragment"
        android:layout_below="@+id/top_fragment"
        android:baselineAligned="false"
        android:orientation="horizontal" >

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

        <FrameLayout
            android:id="@+id/dynamic_area"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="4" >
        </FrameLayout>
    </LinearLayout>

</RelativeLayout>