TabLayout与Design Library中的ViewPager不同步23

时间:2015-10-22 01:39:46

标签: android android-viewpager android-tabs android-tablayout

我的代码一直运行良好,直到我升级到设计库23.

我升级了:

compile 'com.android.support:design:22.2.0'

compile 'com.android.support:design:23.0.0'

以下是发生的事情:我打开了我的应用。我滑到第二个标签。然后我点击第一个标签,没有任何反应。回调表明onTabSelectedListener认为我正在重新选择第一个标签,即使我已经通过刷卡进入第二个标签,现在又回来了。 TL; DR - 当我滑动到其他页面时,标签选择没有更新(即使动画看起来像是同步的)

以下是我一直在使用的代码:

TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tab_layout_main);
tabLayout.addTab(tabLayout.newTab().setText("Grades"));
tabLayout.addTab(tabLayout.newTab().setText("Schedule"));

viewPager = (NonSwipeableViewPager) rootView.findViewById(R.id.pager_main);
pagerAdapter = new PagerAdapterMain(getActivity(), getChildFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(pagerAdapter);
viewPager.setOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        viewPager.setCurrentItem(tab.getPosition());
        //String tag = ((PagerAdapterMain) viewPager.getAdapter()).getRegisteredFragment(viewPager.getCurrentItem()).getTag();
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
});

我正在使用自定义NonSwipeableViewPager以防止从第二个标签滑动。它会覆盖以下回调:

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    // Disable swiping on the 2nd tab ONLY
    switch(getCurrentItem()){
        case 1:
            return false;
        default:
            return super.onInterceptTouchEvent(event);
    }
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    // Disable swiping on the 2nd tab ONLY
    switch(getCurrentItem()){
        case 1:
            return false;
        default:
            return super.onTouchEvent(event);
    }
}

有什么想法吗?我玩过较新的viewPager.addONPageChangeListenerTabLayout.ViewPagerOnTabSelectedListener,但没有运气。

0 个答案:

没有答案