android - 平滑滚动在 ViewPager 中不起作用(支持库)

标签 android scroll android-viewpager

我正在编写使用 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/

相关文章:

android - TensorFlow 对象检测在 Xamarin Android 上失败并出现 reshape 问题

jQuery的scrollTop有点跳动

scroll - 如何确保 block-inline 正常工作?

android - IBM Worklight 6.0 - 忙碌指示器在 Android 上并不总是关闭

Android marshmallow edittext OnKeyListener 未在输入按钮上触发

java - java中如何从Map中读取Arraylist的值

Javascript 滚动到 div id

android - 在 Android 中为 ViewPager 使用 fragment

java - 如何删除查看寻呼机的特定位置

java - 在RelativeLayout中显示ViewPager(LinearLayout无法转换为android.widget.RelativeLayout)