如何以编程方式滚动 recyclerView?

新手上路,请多包涵

我有一个水平的 recyclerView,当我第一次打开活动时,我想让 recyclerview 中的所有项目滚动到底部(在这种情况下向右)并回到顶部(向左)。有点像动画片。滚动行为应该对用户可见。

我试着这样做:

 Animation slideRight = AnimationUtils.loadAnimation(this, R.anim.slide_right);
        Animation slideLeft = AnimationUtils.loadAnimation(this, R.anim.slide_left);
        slideRight.setDuration(1000);
        slideLeft.setDuration(1000);
        slideRight.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                recyclerView.startAnimation(slideLeft);
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        recyclerView.startAnimation(slideRight);

向左滑动动画:

 <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="200"
        android:fromXDelta="-100%"
        android:fromYDelta="0%"
        android:toXDelta="0%"
        android:toYDelta="0%" />

</set>

向右滑动动画:

 <translate
    android:duration="200"
    android:fromXDelta="100%"
    android:fromYDelta="0%"
    android:toXDelta="0%"
    android:toYDelta="0%" />

它可以工作,但是它只是将 recyclerview 作为一个整体滑动,我只想滚动(滑动)这些项目。我怎样才能做到这一点?

原文由 Ege Kuzubasioglu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 310
2 个回答

您可以使用 scrollToPosition()

 recyclerView.post(new Runnable() {
    @Override
    public void run() {
        recyclerView.scrollToPosition(adapter.getItemCount() - 1);
        // Here adapter.getItemCount()== child count
    }
});

smoothScrollToPosition()

 recyclerView.post(new Runnable() {
    @Override
    public void run() {
        recyclerView.smoothScrollToPosition(adapter.getItemCount()- 1);
    }
});

要再次向上移动,您需要使用索引 0 调用上述方法。但首先,您需要确保 RecyclerView 滚动到最后。因此,将 ScrollListener 放在 RecyclerView 上,以确保最后一项可见。

原文由 ADM 发布,翻译遵循 CC BY-SA 4.0 许可协议

用这个..

  int top = 0;
 recyclerView.smoothScrollToPosition(top); // for top

 int bottom = recyclerView.getAdapter().getItemCount()-1;
 recyclerView.smoothScrollToPosition(bottom);

原文由 Santanu Sur 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题