ViewPager和FragmentTabHost两次显示内容

时间:2014-02-04 13:00:05

标签: android android-fragments android-viewpager android-tabhost android-support-library

我有包含Fragment的标签,我想提供向左和向左移动的滑动手势。我在Fragment内部和活动内部使用它。我在ViewPagerFragmentTabHost内使用support.v4(需要处理> = API 10)。问题是,寻呼机开始显示布局顶部的内容,tabhost首先显示选项卡,然后显示内容。当然我想要第二种行为。所以我看到的内容是两次,一次是标签,另一次没有。这是我的布局xml文件。请注意,我在tabhost (@+id/relative_header)上方还有一些其他视图,因此操作栏选项卡不适合这种情况。我已经尝试将寻呼机移到realtabcontent或更高的位置而没有运气。

 <android.support.v4.app.FragmentTabHost
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/relative_header" >

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

        <TabWidget
            android:id="@android:id/tabs"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"> 
        </TabWidget>
        <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"/>
        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    </LinearLayout>
</android.support.v4.app.FragmentTabHost>

我不确定,但我认为其中一个与另一个不兼容,但我不知道应该使用哪个组合来提供片段标签之间的滑动手势。关于我做错了什么的任何想法?

1 个答案:

答案 0 :(得分:3)

好吧,我为任何人写这个答案将来会有同样的问题。我误解了每个布局的作用。 ViewPagerTabHost或多或少做同样的事情。要启用滑动手势,我应该使用ViewPager。为了向此添加标签,我使用了库PagerSlidingTabStrip,同样在2014年2月14日,似乎android团队为此发布了原生布局:PagerSlidingTabStrip。棘手的一点是tabhost具有相同布局的内容和选项卡,但它无法提供滑动手势。