Android 表格布局v23不';t使用ViewPager滚动进行滚动

Android 表格布局v23不';t使用ViewPager滚动进行滚动,android,androiddesignsupport,android-tablayout,Android,Androiddesignsupport,Android Tablayout,使用新的设计支持库23.0.0,拖动相关的ViewPager时,不会滚动TabLayout的选项卡。仅当完成拖动并单击“向上”时(当已选择选项卡时),才会滚动选项卡。这在22.2.1上运行良好 我是否需要添加更多内容才能使其像22.2.1中那样工作?是虫子吗?有解决办法吗 编辑 最新版本23.0.1修复的Bug这里有一个解决方案,由(设计支持库的主要开发人员)提出。这个问题在谷歌问题页面上被提到,并得到了解决 设置ViewPager时输入此代码: viewPager.clearOnPag

使用新的设计支持库23.0.0,拖动相关的
ViewPager
时,不会滚动
TabLayout
的选项卡。仅当完成拖动并单击“向上”时(当已选择选项卡时),才会滚动选项卡。这在22.2.1上运行良好

我是否需要添加更多内容才能使其像22.2.1中那样工作?是虫子吗?有解决办法吗

编辑


最新版本23.0.1修复的Bug这里有一个解决方案,由(设计支持库的主要开发人员)提出。这个问题在谷歌问题页面上被提到,并得到了解决

设置
ViewPager
时输入此代码:

    viewPager.clearOnPageChangeListeners();
    viewPager.addOnPageChangeListener(new TabLayoutOnPageChangeListener(tabLayout));
还要添加此类:

private static class TabLayoutOnPageChangeListener implements ViewPager.OnPageChangeListener {

    private final WeakReference<TabLayout> mTabLayoutRef;
    private int mPreviousScrollState;
    private int mScrollState;

    public TabLayoutOnPageChangeListener(TabLayout tabLayout) {
        mTabLayoutRef = new WeakReference<>(tabLayout);
    }

    @Override
    public void onPageScrollStateChanged(int state) {
        mPreviousScrollState = mScrollState;
        mScrollState = state;
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        final TabLayout tabLayout = mTabLayoutRef.get();
        if (tabLayout != null) {
            final boolean updateText = (mScrollState == ViewPager.SCROLL_STATE_DRAGGING)
                    || (mScrollState == ViewPager.SCROLL_STATE_SETTLING
                    && mPreviousScrollState == ViewPager.SCROLL_STATE_DRAGGING);
            tabLayout.setScrollPosition(position, positionOffset, updateText);
        }
    }

    @Override
    public void onPageSelected(int position) {
        final TabLayout tabLayout = mTabLayoutRef.get();
        if (tabLayout != null) {
            tabLayout.getTabAt(position).select();
        }
    }
}
私有静态类TabLayoutOnPageChangeListener实现ViewPager.OnPageChangeListener{
私人最终WeakReference mTabLayoutRef;
前一个州的私营部门;
私有int-state;
公共TabLayoutOnPageChangeListener(TablayoutTablayout){
mTabLayoutRef=新的WeakReference(表格布局);
}
@凌驾
公共无效onPageScrollStateChanged(int状态){
mpPreviousScrollState=mScrollState;
mScrollState=状态;
}
@凌驾
已滚动页面上的公共无效(int-position、float-positionOffset、int-positionOffsetPixels){
final TabLayout TabLayout=mTabLayoutRef.get();
if(tabLayout!=null){
最终布尔值updateText=(mScrollState==ViewPager.SCROLL\u STATE\u拖动)
||(mScrollState==ViewPager.SCROLL\u STATE\u)
&&mpPreviousScrollState==ViewPager.SCROLL\u STATE\u drawing);
tabLayout.setScrollPosition(位置、位置偏移、更新文本);
}
}
@凌驾
已选择页面上的公共无效(内部位置){
final TabLayout TabLayout=mTabLayoutRef.get();
if(tabLayout!=null){
tabLayout.getTabAt(position.select();
}
}
}
Google问题描述如下: