ViewPagerFlexTitle
ViewPagerFlexTitle copied to clipboard
设置viewPager一开始选中的页面会有bug
当有三个title和viewpager有三个页面的时候,默认让vp选中第三个,调用pager.setCurrentItem(2);,DynamicLine会从第一个连到第三个,测试原因是因为onPageScrolled方法 lastPosition为0,potision为2, 执行这个dynamicLine.updateView(lastPosition * everyLength + dis + fixLeftDis, (position + positionOffset * 2) * everyLength + dis + lineWidth);,就直接第一个到第三个连上了
我也遇到了这个bug, 知道了解决办法。
MyOnPageChangeListener部分代码: @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { if (lastPosition > position) { dynamicLine.updateView((position + positionOffset) * everyLength + dis, (lastPosition + 1) * everyLength - dis); } else { if (positionOffset > 0.5f) { positionOffset = 0.5f; }
//++添加的代码 if (lastPosition != position && selectPosition == position) { dynamicLine.updateView(selectPosition * everyLength + dis, (position + positionOffset * 2) * everyLength + dis + lineWidth); return; } //++添加的代码 dynamicLine.updateView(lastPosition * everyLength + dis, (position + positionOffset * 2) * everyLength + dis + lineWidth); } }
@Override
public void onPageSelected(int position) {
viewPagerTitle.setCurrentItem(position);
//++添加的代码 selectPosition = position;//selectPosition是成员变量 //++添加的代码 }
MainActivity部分代码: //selectPosition是初始化选择的position viewPagerTitle.initData(new String[]{"layout1", "layout2", "layout3", "layout4"}, pager, selectPosition); ............. adapter = new MyPagerAdapter(views); pager.setAdapter(adapter); //++添加的代码 pager.setCurrentItem(selectPosition);
//++添加的代码