如何在ViewPager的末尾添加边距?

时间:2017-11-30 16:33:55

标签: android android-layout android-viewpager

我处理使用viewpager在片段中显示水平图像列表(而不是listview或recyclerview)的遗留代码。 viewpager使用自定义的PagerAdapter来覆盖适当的方法(instantiateItem,getItemPositiion等)。我现在的问题是,我想在viewpager的最后一个元素的末尾添加一些空格,我试图通过为这个最终元素添加一个边距来实现这一点。

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;
}

不幸的是,这不起作用,最后一个元素没有显示。我该如何正确实现这一目标?这是此viewpager所在的片段的xml。

<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>

1 个答案:

答案 0 :(得分:1)

您可以使用ViewPagerAdapter #getPageWidth覆盖最后一页的宽度。要超出页面的其余部分所需的余量。

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