Android:PageTransformer在首次触摸前应用正确的比例但不是alpha

时间:2016-10-22 14:59:51

标签: android android-viewpager

我有一个PageTransformer正确显示我的ViewPager,第二个元素正确缩放,但没有alpha应用于第二个元素。但是,在拖动ViewPager微量时,会正确显示下一个视图。我的alpha和scale的代码是相同的,我不确定这里的问题是什么。

我已经尝试在ViewPagerAdapter添加了内容后(例如viewPager.scrollBy()pager.beginFakeDrag())从处理程序调用代码,但这些并没有帮助。

viewPager.setOffscreenPageLimit(2)已设置。我已经尝试在Adapter中实例化时以编程方式为视图设置alpha,但它没有任何效果。如果正确应用了比例,那么α也应该是正确的。

@Override
    public void transformPage(View page, float position)
    {
        float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
        float alphaFactor = Math.max(MIN_ALPHA, 1 - Math.abs(position));

        page.setScaleX(scaleFactor);
        page.setScaleY(scaleFactor);

        page.setAlpha(alphaFactor);
    }

2 个答案:

答案 0 :(得分:1)

(编辑)正确的解决方案:

ViewPager替换为ViewPager2

有用的资源:

懒惰(而且不那么酷,容易出错)解决方案:

不幸的是,我的布局中没有设置属性android:animateLayoutChanges=true

ViewPagerActivity移到Fragment时遇到了同样的问题。

我认为问题是由于我重用了该片段。在FragmentTransaction上,ViewPager在技术上仍然具有其旧值,因此其视图不需要更改,这就是PageTransformer不被触发的原因。

基本上,您所需要做的就是将ViewPager的{​​{1}}设置为currentItem,然后将其设置为所需的值。

这是我的代码段(0,但是您不需要覆盖MyViewPager.kt)。

ViewPager

答案 1 :(得分:0)

我在ViewPager上设置了Access-Control-Allow-Origin:*。一旦我删除它,它正确加载。不要问我为什么一开始就在那里。