Oyebisi
Oyebisi

Reputation: 724

how do I add margin at the end of a ViewPager?

I'm dealing with legacy code that uses a viewpager to display an horizontal list of images(instead of say a listview or recyclerview) in a fragment. The viewpager uses a custom PagerAdapter which overrides the appropriate methods(instantiateItem, getItemPositiion etc). My issue right now is that I want to add some space at the end of the final element of the viewpager, I've attempted to do this by adding a margin to this final elment.

public Object instantiateItem(ViewGroup collection, int position) {
    FrameLayout itemView = ViewManager.createView(position, height, type);
    int viewWidth = itemView.getLayoutParams().width;
    RelativeLayout itemViewWrap = new RelativeLayout(mContext);
    if(postion == items.size()-1){
        RelativeLayout.LayoutParams itemViewparams = RelaiveLayout.LayoutParams)itemView.getLayoutParams();
        itemViewparams.setMargins(0, 0, viewWidth, 0);
    }
    itemViewWrap.addView(itemView);
    collection.addView(itemViewWrap);
    return itemView;
}

Unfortunately this does not work and the final element is just not shown. How do I properly achieve this? Here is the xml for the fragment in which this viewpager resides.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:gravity="center_horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.playground.test.views.ItemViewPager
        android:id="@+id/viewpager"
        android:layout_gravity="center_vertical"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"/>

</RelativeLayout>

Upvotes: 0

Views: 483

Answers (1)

elmorabea
elmorabea

Reputation: 3263

You could override the last page's width using ViewPagerAdapter# getPageWidth. To be more than the rest of the page's with the margin you want.

https://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageWidth(int)

Upvotes: 1

Related Questions