Popularity
5.9
Stable
Activity
0.0
Stable
715
29
98

Code Quality Rank: L4
Programming language: Java
License: GNU General Public License v3.0 or later
Tags: ViewPager Widget    

ExpandablePager alternatives and similar packages

Based on the "ViewPager Widget" category.
Alternatively, view ExpandablePager alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of ExpandablePager or a related project?

Add another 'ViewPager Widget' Package

README

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 xml app:animation_duration="200" app:collapsed_height="@dimen/header_height" or programmatically java 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


*Note that all licence references and agreements mentioned in the ExpandablePager README section above are relevant to that project's source code only.