我试图在我的Android Studio项目中实现PagerTabStrip。我正在使用全屏活动,但是添加了两个标签条,第二个标签为空,如下图所示:
第二张照片来自示例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代码,我几乎走到了尽头。感谢
答案 0 :(得分:0)
我发现了为什么会出现两条Tab条带。当我调用DemoObjectFragment
课程时,在我创建的新View rootView
下,我正在为activity_fullscreen
布局充气,这是主要布局!这意味着我用tabtrip在屏幕上用tabtrip给屏幕充气。如果我创建一个新的布局文件,即layout_fragment1
并将其设置在View rootView = inflater.inflate(R.layout.layout_fragment1, container, false);
下,那么这将是膨胀的布局,因为它没有标签条,所以不会再创建该条带。我仍然不确定为什么非全屏应用程序表现不同,但这是向前迈出的一步!