如何在保持页面全angular的同时在ViewPager页面之间设置填充

我正在使用Android兼容库中的新ViewPager视图,我不知道如何获得页面之间的填充,以便在它们之间滑动时,有一个可见的边框。

我的ViewPager宽度被设置为fill_parent所以它占用了整个显示宽度。 通过在ViewPager上设置android:padding ,我可以在页面之间得到这个边框,但是在完全显示的时候,增加了(不需要的)缩小页面可见尺寸的效果。

我想我需要的是以某种方式在视图的宽度之外引入一个边框,如果这甚至是有意义的…

新的Android电子市场按照我想要的方式来做,但我无法弄清楚它是如何完成的。

Solutions Collecting From Web of "如何在保持页面全angular的同时在ViewPager页面之间设置填充"

目前在XML布局中没有办法做到这一点,但是您可以在java中使用以下function:

 setPageMargin(int marginPixels) setPageMarginDrawable(drawable d) setPageMarginDrawable(int resId) 

您需要先从您的XML布局中获取传呼机:

 ViewPager pager = (ViewPager) findViewById(R.id.pager); 

看起来更新版本的支持包(自修订版本5以来)通过setPageMargin()setPageMarginDrawable()增加了对ViewPager页面间页边距的支持。

这将是一个工作,但你可以达到你想要的效果,通过有一个边界的UI元素,然后你继续在屏幕上以与刷卡相同的速度animation。

比如说你从右向左滑动:

1)默认情况下,进入查看的页面左边缘有额外的边框元素。

2)通过使用自定义的onPageScrolled()方法实现ViewPager.OnPageChangeListener()监视滑动。 在这里计算刷卡的速度。

3)当传入页面的左边缘碰到屏幕的左边缘时,开始以您计算的速度左边的边界元素animation。

…更多地思考这个问题,我认为如果在整个滑动过程中将边界元素的宽度向左移动,那么幻觉会更加有效。 这听起来很奇怪,但是一旦你想象,这将是有道理的:)

ViewPager的源代码可以在android v4兼容库中使用。

  /** * This method will be invoked when the current page is scrolled, either as part * of a programmatically initiated smooth scroll or a user initiated touch scroll. * * @param position Position index of the first page currently being displayed. * Page position+1 will be visible if positionOffset is nonzero. * @param positionOffset Value from [0, 1) indicating the offset from the page at position. * @param positionOffsetPixels Value in pixels indicating the offset from position. */ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels);