片段没有显示在tablayout中

时间:2017-06-24 19:44:18

标签: java android android-fragments android-tablayout

我正在使用没有TabLayout的片段填充ViewPager。但是当选择一个标签时,我的片段不会显示在标签内。如果我在工具栏下面制作它的文本会显示在工具栏下方和选项卡顶部,但它从不显示在选项卡内部。这是XML。

<android.support.v7.widget.Toolbar
    android:id="@+id/my_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/toolbarColor"
    android:elevation="3dp"
    />

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabGravity="fill"
    app:tabMode="fixed"
    android:layout_below="@+id/my_toolbar" />

<FrameLayout
    android:id="@+id/frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

MainActivity就在这里。

switch(tab.getPosition()){
    case 0:
        Log.i("MainActivity ", "one ");
        FragmentManager fm = getSupportFragmentManager();
        ft = fm.beginTransaction();
        ft.replace(R.id.frame, new TodayFragment());

        break;

    case 1:
        FragmentManager fm1 = getSupportFragmentManager();
        ft = fm1.beginTransaction();
        Log.i("MainActivity ", "two");
        ft.replace(R.id.frame, new SettingsFragment());
}

ft.addToBackStack(null);
ft.commit();

每个Fragment都有一个TextView

2 个答案:

答案 0 :(得分:0)

首先,由于您未提供完整的xml,我认为ToolbarTabLayoutFrameLayout位于RelativeLayout内。

现在据我所知,你可以正确地加载Fragment,但是它们没有显示,因为它们隐藏在其他布局之下。因此,要摆脱您的问题,您需要进行这样的布局设计。

<RelativeLayout 
   android:layout_width="match_parent"
   android:layout_height="match_parent"/>

    <android.support.v7.widget.Toolbar
        android:id="@+id/my_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/toolbarColor"
        android:elevation="3dp" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabGravity="fill"
        app:tabMode="fixed"
        android:layout_below="@+id/my_toolbar" />

    <RelativeLayout
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/tabs"/>
<RelativeLayout/>

只需摆脱FrameLayout并使用RelativeLayout作为您的片段容器,并将其放在TabLayout下,看看它是否正常工作。

答案 1 :(得分:0)

根布局应该是线性布局不明白为什么它必须是线性布局但它的方式