Android PagerSlidingTabStrip:当方向发生变化时,标签之间的滚动会中断

时间:2014-08-20 15:51:48

标签: android scroll android-viewpager pagerslidingtabstrip

我正在使用PagerSlidingTabStrip来获取固定标签和ViewPager来自支持库。当我将方向从纵向更改为横向并尝试从一个页面滚动到另一个页面或尝试单击其中一个选项卡时,滚动会以某种方式中断。滚动指示符不会按标签宽度移动,而只会移动一些随机长度。

@Override public void onViewCreated(View view, Bundle savedInstanceState)
{
    super.onViewCreated(view, savedInstanceState);

    //TODO BUG orientation changes
    PagerAdapter pagerAdapter = new PagerAdapter(getActivity().getSupportFragmentManager());
    pager = (ViewPager) view.findViewById(R.id.viewpager);
    pager.setAdapter(pagerAdapter);

    PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) view.findViewById(R.id.tabs);
    tabs.setShouldExpand(true);
    tabs.setViewPager(pager);

    pager.setCurrentItem(0);
}

知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:3)

根据您的代码,您显然在Fragment中使用ViewPager(而ViewPager也显示嵌套的片段)。

你必须提供一个Fragment的子FragmentManager,它将ViewPager(而不是Activity的一个)保存到ViewPager的适配器。

而不是:

PagerAdapter pagerAdapter = new PagerAdapter(getActivity().getSupportFragmentManager());

使用它:

PagerAdapter pagerAdapter = new PagerAdapter(getChildFragmentManager());