我正在编写使用 ViewPager
来托管 Fragment
的应用程序。
当我以编程方式更改 fragment 时,平滑滚动功能不起作用。我使用 ViewPager.setCurrentItem(int item, boolean smoothScroll)` 方法。
也许有人知道这个错误的解决方法?也许有动画?
编辑:
我正在使用支持包。问题是无论我使用 ViewPager.setCurrentItem(2, true)
还是 ViewPager.setCurrentItem(2, false)
结果都是一样的。 View 切换非常快(不流畅)。
最佳答案
我已通过创建一个使用反射覆盖 ViewPager.mScroller 的 MyViewPager 来修复此问题。
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*/);
}
}
}
关于android - 平滑滚动在 ViewPager 中不起作用(支持库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009180/