Мерцающая полоса вкладки страницы при настройке просмотра текущего элемента пейджера
У меня бесконечно прокручивается ViewPager. Для этого у меня есть 5 предметов (0,1,2,3,4). В состоянии покоя я всегда на вкладке 2. После того, как onPageScrollStateChanged возвращается к SCROLL_STATE_IDLE, я обновляю источник данных, чтобы поместить текущий элемент в позицию 2, а затем я устанавливаю текущий элемент ViewPager на 2, например, так:
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
populateForecastFragmentsArray();
mPager.setCurrentItem(CENTER_PAGE_INDEX, false);
}
}
Это прекрасно работает, чтобы получить бесконечную прокрутку, которую я ищу, однако PagerTabStrip мерцает каждый раз setCurrentItem()
называется.
Есть ли другой способ установить текущий элемент без использования setCurrentItem? Есть ли лучший способ справиться с бесконечной прокруткой?
Я определил, что мерцание происходит во время setCurrentItem, а не populateForecastFragmentsArray(), а просто для полноты, вот код из populateForecastFragmentsArray():
public void populateForecastFragmentsArray () {
mForecastFragmentArrayList.clear();
for (int i = 0; i < mPageAdapter.getCount(); i++) {
ForecastFragment fragment = new ForecastFragment();
int offset = i - CENTER_PAGE_INDEX;
fragment.calendar = (Calendar)mDisplayedDate.clone();
fragment.calendar.add(Calendar.DAY_OF_YEAR, offset);
mForecastFragmentArrayList.add(fragment);
}
}
1 ответ
Получилась та же проблема, в моем случае у меня было два практически одинаковых класса, и эта проблема была только в одном случае, в другом все работало хорошо, как есть. Не нашел никаких подсказок о том, почему это происходит, но нашел взлом в комментариях здесь: http://thehayro.blogspot.ru/2013/09/infiniteviewpager-infinite-paging.html Короче говоря:
- Реализуйте подкласс ViewPager, как показано здесь: Изменить продолжительность анимации ViewPager при программном скольжении
- Запомните текущую продолжительность прокрутки
- Установите длительность прокрутки до 0
- Установить текущий элемент в вашем пейджере с анимацией
- Восстановить начальную продолжительность прокрутки