我有一个包含碎片的viewpager。
我使用类似于例如的代码。
ViewPager margin in PageTransformer transformations
和填充,这样您就可以看到当前正在查看的片段两侧的片段的淡出边缘。
但问题是,当viewpager首次启动时,两侧的碎片都不会褪色并缩小。
即。我的ZoomOutPageTransformer的transformPage方法在您开始滑动之前不会被调用,因此初始页面右侧/左侧或视图看起来错误的地方,然后跳转'滑动完成后向右看。
任何想法如何使其正确呈现,例如如果我打电话
myViewPager.setCurrentItem(1) - 或其他任何内容,两侧的页面都会被适当缩小。
如何通过应用于'关闭屏幕的缩小页面变换器来使viewpager正确渲染oncreate?片段
答案 0 :(得分:2)
基本上,当您在视图寻呼机上使用填充和边距时,PageTransformer的transformPage()方法返回错误的位置。 似乎是here所述的框架错误。 解决方法解释说,我没有工作。
所以我提出了另一种解决方案,只要将数据放在相关的适配器上,就可以在视图寻呼机上拖动。
private void invalidatePageTransformer(final ViewPager pager)
{
new Handler().post(new Runnable() {
@Override
public void run() {
//no need to invalidate if we have no adapter or no items
if (pager.getAdapter() != null && pager.getAdapter().getCount() > 0)
{
//import check here, only fakeDrag if "beginFakeDrag()" returns true
if (pager.beginFakeDrag())
{
pager.fakeDragBy(0f);
pager.endFakeDrag();
}
}
}
});
}
答案 1 :(得分:1)
我知道我来不及回答,但我遇到了同样的问题,但没有找到任何答案。所以对于任何面临同样问题的人来说,这里有一些东西:
所以基本上第一次加载时,页面转换器没有为下一个项目正确调用,尽管它在第一次滚动时效果很好。
所以我写了几行来滚动页面然后把它拿回来,它给我们提供了所需的视图:
viewPager.scrollBy(5,0);
viewPager.scrollBy(-5,0);
答案 2 :(得分:0)
我遇到了类似的问题并通过添加:
解决了这个问题// ... your ViewPager setup code here
myViewPager.setPageMargin(1);
答案 3 :(得分:0)
我已经尝试调整ViewPager的填充,然后我发现45dp会让ViewPager内部的项目正确结束。
<android.support.v4.view.ViewPager
...
android:paddingTop="45dp"
...
/>