I ran into the same problem. When I initialize the ViewPager, the position of the indicator was 0. This may depend on the number of calculations for the contents of the pager. I am using ViewTreeObserver as shown below.
mGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { mViewPager.setCurrentItem(newPosition); removeOnGlobalLayoutListener(mSlidingTabLayout.getViewTreeObserver(), mGlobalLayoutListener); } }; mSlidingLayout.getViewTreeObserver().addOnGlobalLayoutListener(mGlobalLayoutListener);
and
private void removeOnGlobalLayoutListener(ViewTreeObserver observer, ViewTreeObserver.OnGlobalLayoutListener listener) { if (observer == null) return; if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { observer.removeGlobalOnLayoutListener(listener); } else { observer.removeOnGlobalLayoutListener(listener); } }
Thus, you also never have to worry about setting the delay time.
chanzmao Nov 11 '15 at 10:05 2015-11-11 10:05
source share