【问题标题】:ViewPager inside Fragment with margins and page transformer not rendering correctly带有边距和页面转换器的片段内的 ViewPager 无法正确呈现
【发布时间】:2014-06-19 16:28:11
【问题描述】:

我有一个viewpager,里面有片段。

我使用类似于例如的代码

ViewPager margin in PageTransformer transformations

和填充,以便您可以在当前查看的片段的任一侧看到片段的淡出边缘。

但问题是当viewpager第一次启动时,两边的fragment并没有淡出和缩小。

即我的 ZoomOutPageTransformer 的 transformPage 方法在您开始滑动之前不会被调用,因此最初的页面右/左或视图看起来错误的地方,然后在完成滑动后“跳转”到向右看。

我如何使其正确渲染的任何想法,例如如果我打电话

myViewPager.setCurrentItem(1) - 或其他任何东西,两侧的页面将被适当地缩小。

如何在将 zoomoutpagetransformer 应用于“屏幕外”片段的情况下让 viewpager 在创建时正确呈现?

【问题讨论】:

  • 您找到解决方案了吗?

标签: android animation android-viewpager fragment


【解决方案1】:

基本上,当您在视图寻呼机上使用填充和边距时,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();
                }
            }
        }
    });

}

【讨论】:

  • 对我来说有效!我用物品填充我的适配器,然后我打电话给viewPager.post(() -> { ...fakeDrag})
【解决方案2】:

我知道我来不及回答,但我遇到了同样的问题,但没有找到任何答案。所以对于遇到同样问题的人来说,这里有一些东西:

所以基本上页面转换器在第一次加载时不会正确调用下一个项目,尽管它在第一次滚动时运行良好。

所以我写了几行来稍微滚动页面并将其取回,从而为我们提供所需的视图:

 viewPager.scrollBy(5,0);
 viewPager.scrollBy(-5,0);

【讨论】:

  • 尝试增加滚动量
【解决方案3】:

我遇到了类似的问题,并通过添加解决了它:

// ... your ViewPager setup code here
myViewPager.setPageMargin(1);

【讨论】:

    【解决方案4】:

    我尝试调整 ViewPager 的填充,然后我发现 45dp 会让 ViewPager 中的项目正确显示。

    <android.support.v4.view.ViewPager
            ...
            android:paddingTop="45dp"
            ...
            />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      相关资源
      最近更新 更多