Skip to content
ViewPager that slides vertically.
Branch: master
Clone or download
Latest commit 58de7e5 Mar 22, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
demoapp
expandablepager
gif
.gitignore
LICENSE.md
README.md
build.gradle
gradle.properties initial commit Mar 1, 2016
gradlew
gradlew.bat
settings.gradle

README.md

Download Android Arsenal

ExpandablePager

Layout that contains a ViewPager and can slide vertically between 2 states (expanded and collapsed).

alt tag #Requirements Android 4.0+ (Ice Cream Sandwich and later) #Setup ###Step 1 Add the following line to the dependencies section of your build.gradle file

compile 'com.telenav.expandablepager:expandablepager:0.2.1'

###Step 2 Extend desired adapter:

  • ExpandablePagerAdapter (don't forget to override instantiateItem)
public class MyAdapter extends ExpandablePagerAdapter<Book> {
    
    ...

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        final ViewGroup rootView = (ViewGroup) LayoutInflater.from(container.getContext()).inflate(R.layout.page, container, false); //inflate view

        ...

        return attach(container, rootView, position); //don't forget to return the result of attach()
    }
}
  • ExpandableFragmentPagerAdapter
  • ExpandableFragmentStatePagerAdapter

###Step 3 Add ExpandablePager to a layout

<?xml version="1.0" encoding="utf-8"?>
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.telenav.expandablepager.ExpandablePager
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="bottom"
        android:layout_alignParentBottom="true" /> //pin the pager to the bootom of the screen using layout_gravity or layout_alignParentBottom
</RelativeLayout>

###Step 4 Create and pass your adapter to the ExpandablePager

    MyAdapter adapter = new MyAdapter(myData);
    ExpandablePager pager = (ExpandablePager) findViewById(R.id.container);
    pager.setAdapter(adapter);

###Step 5 (optional)

  • Set collapsed height & animation duration via xml
    app:animation_duration="200"
    app:collapsed_height="@dimen/header_height"

or programmatically

    pager.setAnimationDuration(duration);
    pager.setCollapsedHeight((int) getResources().getDimension(R.dimen.header_height));
  • Set display mode (MODE_REGULAR or MODE_FIXED)
    pager.setMode(ExpandablePager.MODE_REGULAR);

#Extras Change pager state (supported states are STATE_COLLAPSED, STATE_EXPANDED, and STATE_HIDDEN)

    pager.setState(ExpandablePager.STATE_COLLAPSED)

Animate pager state change

    pager.animateToState(ExpandablePager.STATE_COLLAPSED)

Set current item

    pager.setCurrentItem(index, false);

Set listeners

    pager.setOnSliderStateChangeListener(new OnSliderStateChangeListener() {

        @Override
        public void onStateChanged(View page, int index, int state) {
            ...
        }

        @Override
        public void onPageChanged(View page, int index, int state) {
            ...
        }
    });
    
    pager.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(List<?> items, int index) {
            ...
        }
    });

#Sample For a more detailed example check the demoapp module.

#License Apache License, Version 2.0

You can’t perform that action at this time.