ViewPager setCurrentItem(PAGEID,真)不smoothscroll [英] ViewPager setCurrentItem(pageId, true) does NOT smoothscroll

查看:426
本文介绍了ViewPager setCurrentItem(PAGEID,真)不smoothscroll的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在编译SDK 4.03,三星杨维龙Android 2.2系统,支持图书馆的Andr​​oid 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆