package com.marshalchen.common.demoofui.observablescrollview; import android.app.Activity; import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; import com.github.ksoichiro.android.observablescrollview.ObservableScrollView; import com.github.ksoichiro.android.observablescrollview.ObservableScrollViewCallbacks; import com.marshalchen.common.demoofui.R; public class ViewPagerTabScrollViewFragment extends Fragment { public static final String ARG_SCROLL_Y = "ARG_SCROLL_Y"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.observable_scroll_view_fragment_scrollview, container, false); final ObservableScrollView scrollView = (ObservableScrollView) view.findViewById(R.id.scroll); Activity parentActivity = getActivity(); if (parentActivity instanceof ObservableScrollViewCallbacks) { // Scroll to the specified offset after layout Bundle args = getArguments(); if (args != null && args.containsKey(ARG_SCROLL_Y)) { final int scrollY = args.getInt(ARG_SCROLL_Y, 0); ViewTreeObserver vto = scrollView.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { scrollView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } else { scrollView.getViewTreeObserver().removeOnGlobalLayoutListener(this); } scrollView.scrollTo(0, scrollY); } }); } scrollView.setScrollViewCallbacks((ObservableScrollViewCallbacks) parentActivity); } return view; } }