【问题标题】:TabLayout v23 doesn't scroll with ViewPager scrollTabLayout v23 不随 ViewPager 滚动而滚动
【发布时间】:2015-09-07 23:23:47
【问题描述】:

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

我是否必须添加更多内容才能使其像在 22.2.1 中一样工作?它是一个错误吗?有解决办法吗?

编辑

在最新版本 23.0.1 中修复了错误

【问题讨论】:

标签: android androiddesignsupport android-tablayout


【解决方案1】:

这里有一个解决方法,由Chris Banes(设计支持库的主要开发者)提出。这个问题在 Google 问题页面 here 上提到,并在 here 解决。

设置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();
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 2013-02-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多