У меня была та же потребность, что и у вас, я нашел этот проект, который реализует именно то, что вам нужно, плюс еще несколько приятных глазу трюков.
https://github.com/kmshack/Android-ParallaxHeaderViewPager
Магия привязывает прокрутку, которая происходит в списке фрагментов, к заголовку, определенному в действии. Также существует принципиальная привязка между выбором вкладки и положением прокрутки в списке, для настройки списков при свайпе. Этот код основан на этом репозитории github, но он проще (поэтому менее надежен), прочитайте его, чтобы понять, что происходит, а затем прочитайте исходный код в репозитории.
public class MyFragment extends Fragment implements OnScrollListener {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
((MyParentActivity) getActivity()).onScrollFragment(view, mTabPosition);
}
public void adjustScroll(int scrollHeight) {
if (scrollHeight == 0 && fragmentListView.getFirstVisiblePosition() >= 1) {
return;
}
officesListView.setSelectionFromTop(1, scrollHeight);
}
}
то в действии вам просто нужны эти два конкретных метода
public class MyParentActivity implements ViewPager.OnPageChangeListener{
@Override
public void onPageSelected(int position)
myFragmentPagerAdapter.getFragmentAt(position)
.adjustScroll((int) (mHeader.getHeight() + ViewHelper.getTranslationY(mHeader)));
}
public void onScrollFragment(AbsListView view, int tabPosition) {
if (mViewPager.getCurrentItem() == tabPosition) {
int scrollY = getScrollY(view);
ViewHelper.setTranslationY(mHeader, Math.max(-scrollY, mMinHeaderTranslation));
}
}
}
этот код подходит для API 8 благодаря ViewHelper NineOldAndroids
person
vfede
schedule
06.05.2015