ViewPagerFlexTitle icon indicating copy to clipboard operation
ViewPagerFlexTitle copied to clipboard

设置viewPager一开始选中的页面会有bug

Open shengMR opened this issue 7 years ago • 1 comments

当有三个title和viewpager有三个页面的时候,默认让vp选中第三个,调用pager.setCurrentItem(2);,DynamicLine会从第一个连到第三个,测试原因是因为onPageScrolled方法 lastPosition为0,potision为2, 执行这个dynamicLine.updateView(lastPosition * everyLength + dis + fixLeftDis, (position + positionOffset * 2) * everyLength + dis + lineWidth);,就直接第一个到第三个连上了

shengMR avatar Sep 29 '17 07:09 shengMR

我也遇到了这个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);

//++添加的代码

jannonx avatar Dec 21 '17 04:12 jannonx