ViewPager setCurrentItem(PAGEID,真)不smoothscroll [英] ViewPager setCurrentItem(pageId, true) does NOT smoothscroll
本文介绍了ViewPager setCurrentItem(PAGEID,真)不smoothscroll的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在编译SDK 4.03,三星杨维龙Android 2.2系统,支持图书馆的Android 4.0,并在我的应用程序使用ViewPager,实际刷卡工作正常,但是当我做
I am compiling on SDK 4.03, Samsung Infuse Android 2.2, Support Library for Android 4, and using ViewPager in my app, actual swipe works fine, but when I do
viewPager.setCurrentItem(id); // , or
viewPager.setCurrentItem(id, true);
这不平滑滚动,但切换的看法瞬间。虽然文件明确指出,这是目的,设置第二个参数为true。怎么了呢?
It does not smooth scroll, but switches views instantly. Although the documentation clearly states that that is the purpose setting the second argument to true. Whats up with this?
推荐答案
我通过创建一个MyViewPager使用反射来覆盖ViewPager.mScroller解决了这个问题。
I've fixed this by creating a MyViewPager that overrides the ViewPager.mScroller using reflection.
public class MyViewPager extends ViewPager {
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
setMyScroller();
}
private void setMyScroller() {
try {
Class<?> viewpager = ViewPager.class;
Field scroller = viewpager.getDeclaredField("mScroller");
scroller.setAccessible(true);
scroller.set(this, new MyScroller(getContext()));
} catch (Exception e) {
e.printStackTrace();
}
}
public class MyScroller extends Scroller {
public MyScroller(Context context) {
super(context, new DecelerateInterpolator());
}
@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
super.startScroll(startX, startY, dx, dy, 1000 /*1 secs*/);
}
}
}
这篇关于ViewPager setCurrentItem(PAGEID,真)不smoothscroll的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文