【问题标题】:Smooth Horizontal Scrolling of Recyclerview inside ScrollviewScrollview 内 Recyclerview 的平滑水平滚动
【发布时间】:2015-12-20 18:00:12
【问题描述】:

我正在尝试实现类似于 Google Play 商店的着陆页的效果。我相信的是,层次结构如下 -

  • 协调器布局
  • 滚动视图
  • 具有水平线性布局的 Recyclerview

“新+更新游戏”部分的水平滑动非常流畅,并且不会干扰垂直滚动。在我的实现中,在滑动过程中,有上下移动,因此效果不流畅。

理想情况下,仅适用于明确的向上或向下手势,如果视图向上或向下。

我的理解正确吗?是否有任何教程或指南可以帮助我达到相同的效果?

【问题讨论】:

  • 我有同样的问题。你找到解决办法了吗?
  • 我也卡住了

标签: android android-recyclerview


【解决方案1】:

如果您能添加一些代码 sn-ps 以便更好地理解您的问题,我将不胜感激。尽管,这是摘录

{
 recyclerView.setHasFixedSize(true);
        linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, true);
        linearLayoutManager.setReverseLayout(false);
        linearLayoutManager.setStackFromEnd(false);
        adapter = new RecyclerAdapter(getContext(), arrayList);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(adapter);
        recyclerView.setNestedScrollingEnabled(false);
        adapter.notifyDataSetChanged();
}

【讨论】:

  • linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);最后一个参数将 ReverseLayout 设置为 false,因此您不需要设置 true 然后为 false。
【解决方案2】:

如果我正确理解了您的问题,您将 scrollview 作为父级,并且您有一个带有水平滚动/滑动的子 recyclerview,因此只需在您的 recyclerview 上执行此操作即可。

addOnItemTouchListener(new OnItemTouchListener() {
            @Override
            public boolean onInterceptTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) {
                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN && recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_SETTLING){
                    recyclerView.stopScroll();
                }
                return false;
            }

            @Override
            public void onTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) {

            }

            @Override
            public void onRequestDisallowInterceptTouchEvent(boolean b) {

            }
        });

如果您有超过 1 个 recyclerview,则对其他 recyclerview 执行相同操作。如果这有帮助,别忘了点赞

【讨论】:

    【解决方案3】:

    ViewPager

    嗨,

    我认为您不需要使用 Recyclerview,建议您使用 View Pager 来实现该功能。它会解决你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多