PagerTabStrip在Fullscreen中添加两个条带而不是一个条带

时间:2015-08-06 01:15:34

标签: android android-fragments android-viewpager android-fullscreen pagertabstrip

我试图在我的Android Studio项目中实现PagerTabStrip。我正在使用全屏活动,但是添加了两个标签条,第二个标签为空,如下图所示:enter image description here

如果我使用常规活动,则只添加一个标签条,这就是我想要的: enter image description here

第二张照片来自示例Google项目,但我创建了一个新的全屏活动项目和一个新的常规活动项目,并获得了相同的结果。我在整个过程中使用了与Google Project相同的代码。

从上面的全屏活动中,在XML中设置ViewPager和PagerTabStrip:

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.PagerTabStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_gravity="top"
        android:textColor="#fff"
        android:paddingTop="4dp"
        android:paddingBottom="4dp" />

</android.support.v4.view.ViewPager>

在FullscreenActivity.java中:

MyAdapter mAdapter;
ViewPager mPager;

...onCreate...{
    ...
    mAdapter = new MyAdapter(getSupportFragmentManager());
    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);
}

然后我需要这两个类:

public static class MyAdapter extends FragmentStatePagerAdapter {
    public MyAdapter(FragmentManager frag) {
        super(frag);
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = new DemoObjectFragment();
        Bundle args = new Bundle();
        args.putInt(DemoObjectFragment.ARG_OBJECT, position + 1);
        fragment.setArguments(args);
        return fragment;
    }

    public int getCount() {
        return 5;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0: {page = "Page 1";
                break;}
            case 1: {page = "Page 2";
                break;}
            case 2: {page = "Page 3";
                break;}
            case 3: {page = "Page 4";
                break;}
            case 4: {page = "Page 5";
                break;}
        }
        return page;
    }
}

public static class DemoObjectFragment extends Fragment {
    public static final String ARG_OBJECT = "object";

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.activity_fullscreen, container, false);
    return rootView;
    }
}

我可以做些什么来摆脱这第二个酒吧?我试图剥离xml元素和java代码,我几乎走到了尽头。感谢

1 个答案:

答案 0 :(得分:0)

我发现了为什么会出现两条Tab条带。当我调用DemoObjectFragment课程时,在我创建的新View rootView下,我正在为activity_fullscreen布局充气,这是主要布局!这意味着我用tabtrip在屏幕上用tabtrip给屏幕充气。如果我创建一个新的布局文件,即layout_fragment1并将其设置在View rootView = inflater.inflate(R.layout.layout_fragment1, container, false);下,那么这将是膨胀的布局,因为它没有标签条,所以不会再创建该条带。我仍然不确定为什么非全屏应用程序表现不同,但这是向前迈出的一步!