hackware1993 / MagicIndicator

A powerful, customizable and extensible ViewPager indicator framework. As the best alternative of ViewPagerIndicator, TabLayout and PagerSlidingTabStrip —— 强大、可定制、易扩展的 ViewPager 指示器框架。是ViewPagerIndicator、TabLayout、PagerSlidingTabStrip的最佳替代品。支持角标,更支持在非ViewPager场景下使用(使用hide()、show()切换Fragment或使用setVisibility切换FrameLayout里的View等),http://www.jianshu.com/p/f3022211821c
9.68k stars 1.54k forks source link

导航栏默认选中项的问题 #272

Open yilylong opened 2 years ago

yilylong commented 2 years ago

NavigatorHelper里面mCurrentIndex没有提供设值的方法,如果viewpager调用了setCurrentItem 导致导航栏默认选中标题跟viewpager的设置不一致。

初始化时候CommonNavigator 里面调用的时候mNavigatorHelper.getCurrentIndex()默认值还是0 与外部viewpager的设置不一致。 @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); if (mAdapter != null) { preparePositionData(); if (mIndicator != null) { mIndicator.onPositionDataProvide(mPositionDataList); } if (mReselectWhenLayout && mNavigatorHelper.getScrollState() == ScrollState.SCROLL_STATE_IDLE) { onPageSelected(mNavigatorHelper.getCurrentIndex()); onPageScrolled(mNavigatorHelper.getCurrentIndex(), 0.0f, 0); } } }

NavigatorHelper增加一个mCurrentIndex赋值方法才行