Android 表格布局v23不';t使用ViewPager滚动进行滚动
使用新的设计支持库23.0.0,拖动相关的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
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问题描述如下: