我正在尝试在我的 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 代码。谢谢