使用新的设计支持库 23.0.0,在TabLayout
您拖动关联的时不会滚动选项卡ViewPager
。仅当您完成拖动并向上单击时(当已选择选项卡时),选项卡才会滚动。这在 22.2.1 上运行良好
我是否必须添加更多内容才能使其像在 22.2.1 中一样工作?它是一个错误吗?有解决方法吗?
编辑
上一个版本 23.0.1 修复的错误
使用新的设计支持库 23.0.0,在TabLayout
您拖动关联的时不会滚动选项卡ViewPager
。仅当您完成拖动并向上单击时(当已选择选项卡时),选项卡才会滚动。这在 22.2.1 上运行良好
我是否必须添加更多内容才能使其像在 22.2.1 中一样工作?它是一个错误吗?有解决方法吗?
编辑
上一个版本 23.0.1 修复的错误
这是Chris Banes(设计支持库的主要开发人员)提出的解决方法。此问题已在此处的 Google 问题页面上提及,并已在此处解决。
设置时输入此代码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();
}
}
}