2

我正在尝试在我的 Android Studio 项目中实现 PagerTabStrip。我正在使用全屏活动,但添加了两个选项卡条,第二个是空的,如下图所示:在此处输入图像描述

如果我使用常规活动,则只添加一个 Tab Strip,这就是我想要的: 在此处输入图像描述

第二张照片来自一个示例 Google 项目,但我创建了一个新的全屏活动项目和一个新的常规活动项目并获得了相同的结果。我自始至终都使用了来自 Google 项目的相同代码。

从我上面的全屏活动中,在 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 代码。谢谢

4

1 回答 1

0

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

于 2015-08-06T18:49:27.777 回答