我有一个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);
}
答案 0 :(得分:1)
(编辑)正确的解决方案:
将ViewPager
替换为ViewPager2
。
有用的资源:
懒惰(而且不那么酷,容易出错)解决方案:
不幸的是,我的布局中没有设置属性android:animateLayoutChanges=true
。
将ViewPager
从Activity
移到Fragment
时遇到了同样的问题。
我认为问题是由于我重用了该片段。在FragmentTransaction
上,ViewPager
在技术上仍然具有其旧值,因此其视图不需要更改,这就是PageTransformer
不被触发的原因。
基本上,您所需要做的就是将ViewPager
的{{1}}设置为currentItem
,然后将其设置为所需的值。
这是我的代码段(0
,但是您不需要覆盖MyViewPager.kt
)。
ViewPager
答案 1 :(得分:0)
我在ViewPager上设置了Access-Control-Allow-Origin:*
。一旦我删除它,它正确加载。不要问我为什么一开始就在那里。