ViewPager setCurrentItem(pageId, true) does NOT smoothscroll

前端 未结 13 1205
予麋鹿
予麋鹿 2020-12-02 13:01

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



        
13条回答
  •  广开言路
    2020-12-02 13:28

    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*/);
            }
        }
    }
    

提交回复
热议问题