An Android library supports sticking the navigator on the top when ItemView scrolls in Viewpager.
「 github.com/w446108264/StickHeaderLayout 」other library , more freely defined as you need
- Support RecyclerView, ScrollView, WebView, ListView.
- Scrolling, with smooth scrolling fling, will not be interrupt when ticking the navigator.
- Don't need to preset the height value,all is automatic.
You can download a sample APK
--
simple to your proejct
howerver, StickHeaderViewPager
must have two childViews,frist childView will scroll with viewpager,second will tick on the top.
<com.library.StickHeaderViewPager
android:id="@+id/shvp_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/toolbar">
<ImageView
android:id="@+id/iv_headerImage"
android:layout_width="match_parent"
android:layout_height="200dp"
android:src="@drawable/bg_simple_header"
android:scaleType="centerInside"/>
<TextView
android:id="@+id/tv_stick"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical"
android:paddingLeft="10dp"
android:background="#657232"
android:text="This is a simple demo!"
/>
</com.library.StickHeaderViewPager>
and then create a fragment which extends ScrollFragment
.it's easy. if you need a ListView ,please make your fragment extends StickHeaderListFragment,if you want to create a webView ,just extends StickHeaderWebViewFragment. even dot't need to inflate view by yourself. for a example.
public class ListViewSimpleFragment extends StickHeaderListFragment {
public static ListViewSimpleFragment newInstance() {
ListViewSimpleFragment fragment = new ListViewSimpleFragment();
return fragment;
}
public static ListViewSimpleFragment newInstance(String title) {
ListViewSimpleFragment fragment = new ListViewSimpleFragment();
fragment.setTitle(title);
return fragment;
}
@Override
public void bindData() {
setAdapter();
}
public void setAdapter() {
if (getActivity() == null) return;
int size = 100;
String[] stringArray = new String[size];
for (int i = 0; i < size; ++i) {
stringArray[i] = ""+i;
}
ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, stringArray);
getScrollView().setAdapter(adapter);
}
}
last step,init your StickHeaderViewPager with StickHeaderViewPagerBuilder
.that's all. by the way,activity should extends FragmentActivity or AppCompatActivity.
StickHeaderViewPagerBuilder.stickTo((StickHeaderViewPager) findViewById(R.id.shvp_content))
.setFragmentManager(getSupportFragmentManager())
.addScrollFragments(ListViewSimpleFragment.newInstance("ListView"))
.notifyData();
Please fell free to contact me if there is any problem when using the library.
- email: shengjun8486@gmail.com
- ParallaxHeaderViewPager