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

2023-10-04移动开发问题
18

本文介绍了平滑滚动在 ViewPager 中不起作用(支持库)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在编写使用 ViewPager 来托管 Fragments 的应用程序.

I am writing application that uses ViewPager to host Fragments.

当我以编程方式更改片段时,平滑滚动功能不起作用.我使用 ViewPager.setCurrentItem(int item, boolean smoothScroll)` 方法.

When I change fragment programmatically the smooth scroll function does not work. I use ViewPager.setCurrentItem(int item, boolean smoothScroll)` method.

也许有人知道解决此错误的方法吗?也许有动画?

Maybe anyone know a workaround this bug? Maybe with animations?

我正在使用支持包.问题是无论我使用 ViewPager.setCurrentItem(2, true) 还是 ViewPager.setCurrentItem(2, false) 结果都是一样的.视图切换非常快(不流畅).

I am using support package. And the issue is that whether I use ViewPager.setCurrentItem(2, true) or ViewPager.setCurrentItem(2, false) the result is the same. The view switches really fast (not smoothly).

推荐答案

我通过创建一个使用反射覆盖 ViewPager.mScroller 的 MyViewPager 解决了这个问题.

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 中不起作用(支持库)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

UIScrollView 和 Cocos2D
UIScrollView and Cocos2D(UIScrollView 和 Cocos2D)...
2024-08-12 移动开发问题
2

如何从 CCScrollView 上的按钮更改标签文本?
How to change labels text from a button on a CCScrollView?(如何从 CCScrollView 上的按钮更改标签文本?)...
2024-08-12 移动开发问题
6

CCScrollView 滚动和触摸事件永远不会触发
CCScrollView scroll and touch events never firing(CCScrollView 滚动和触摸事件永远不会触发)...
2024-08-12 移动开发问题
1

如何在 COCOS2d Android 中使用 CClistview?
How can I use CClistview in COCOS2d Android?(如何在 COCOS2d Android 中使用 CClistview?)...
2024-08-12 移动开发问题
5

cocos2d-android:如何显示分数
cocos2d-android: how to display score(cocos2d-android:如何显示分数)...
2024-08-11 移动开发问题
7

Sqlite 数据库未从资产文件夹 Android 复制
Sqlite database not copied from asset folder Android(Sqlite 数据库未从资产文件夹 Android 复制)...
2024-04-15 移动开发问题
8