Android Support4Demos的FragmentTabs示例中的两个框架布局

时间:2012-09-07 13:10:28

标签: android android-layout android-fragments android-framelayout

我是Android新片段的新手,我指的是片段演示示例提供的supprotv4兼容库。

任何人都可以解释为什么Android Support4Demos中的FragmentTabs.java示例中有两个帧布局(@+android:id/realtabcontent , @android:id/tabcontent)

FragmentTabs.java调用setContentView(R.layout.fragment_tabs);方法,以下是相同的布局文件。

fragment_tabs.xml

    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

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

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:orientation="horizontal" />

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="0" />

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

    </TabHost>

提前致谢

1 个答案:

答案 0 :(得分:4)

在完成示例后,我在FragmentsTabs.java

中找到了以下评论
 /**
 * This is a helper class that implements a generic mechanism for
 * associating fragments with the tabs in a tab host. It relies on a trick.
 * Normally a tab host has a simple API for supplying a View or Intent that
 * each tab will show. This is not sufficient for switching between
 * fragments. So instead we make the content part of the tab host 0dp high
 * (it is not shown) and the TabManager supplies its own dummy view to show
 * as the tab content. It listens to changes in tabs, and takes care of
 * switch to the correct fragment shown in a separate content area whenever
 * the selected tab changes.
 */