ViewPager每次notifyDataSetChanged之后,所设置的PageTransformer显示就出问题?
第一次setPageTransformer
之后可以正常使用,但是当notifyDataSetChanged
之后,其显示就有问题。但是只要viewpager
一滑动,PageTransformer
的效果就有了。
正常情况下我设置的PageTransformer
是这样的,两边没有显示的比较小,而当前位置的显示大:
但是当notifyDataSetChanged
之后,显示效果成这个样子了:
不过只要有滑动,显示效果又没问题了。
这是个什么情况,要如何notifyDataSetChanged
之后就可以显示PageTransformer
的效果?
下面是我的PageTransformer
的代码(个人感觉这个代码是没有问题的):
private class Transformer implements ViewPager.PageTransformer {
private final float MIN_SCALE = 0.8f;
@Override
public void transformPage(View page, float position) {
if(position >= -1 && position <= 1) {
page.setScaleX(1.0f - Math.abs(position) * (1 - MIN_SCALE));
page.setScaleY(1.0f - Math.abs(position) * (1 - MIN_SCALE));
} else {
page.setScaleX(MIN_SCALE);
page.setScaleY(MIN_SCALE);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
用了个蛋疼的方法解决的。
我说一下吧,希望能帮到别人,我也是notifyDataSetChanged后,那个效果消失,其实调用vp.setCurrentItem(position);就可以解决问题,但是,必须跳转到跟notifyDataSetChanged之前不同的item才可以出现左右变小的效果,如果想回到之前的item,就得先vp.setCurrentItem(新item);然后vp.setCurrentItem(原来的item);但是这样还是不会有效果,因为viewpager的缓存机制,所以,必须要有一定延迟才可以,所以,我弄了个曲线救国的方式,不是很优雅,大概是这样的
这样有一定延迟,时间很短,1ms,但是确实起作用了。
我的没问题啊 。 你是如何notifyDataSetChanged的?
楼主解决了吗?
想问下 楼主解决这个问题了嘛
大佬 你这问题解决了吗?我也遇到这问题,现在是暂时重新new Adapter但是刷新会重新加载图片。
你的ViewPager里面显示多少项,就调用setOffscreenPageLimit(*)设置多少项,我当时碰到的问题是设置setCurrentItem的时候显示图片那种样式。原因是跳转到某个页面之后,前后两个页面还没来得及加载出来,所以动画执行的没效果。
楼主问题解决了吗? 我的也出现这个情况了
楼主解决了吗?现在也遇到这个问题。通过下面的这样的方式解决的,感觉很蠢
mViewPager.setCurrentItem(1);
mViewPager.setCurrentItem(0);
mViewPager.invalidate();
重新setAdapter