我处理使用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>
答案 0 :(得分:1)
您可以使用ViewPagerAdapter #getPageWidth覆盖最后一页的宽度。要超出页面的其余部分所需的余量。
https://developer.android.com/reference/android/support/v4/view/PagerAdapter.html#getPageWidth(int)