【问题标题】:RecyclerView inside RecyclerView is not scrollingRecyclerView 内的 RecyclerView 不滚动
【发布时间】:2023-03-03 04:22:02
【问题描述】:

我有一个带有 GridLayoutManager 的 Recyclerview,它的子项内部可能有一个垂直的 RecyclerView。这是截图:

我已经为这个场景创建了适配器。它正确显示了它,但无论里面有多少项目,内部 Recyclerview 都不会滚动。谁能建议如何让内部和主要 RecyclerViews 滚动?

【问题讨论】:

  • 你设置rv.setNestedScrollingEnabled(false)了吗?
  • 是的,我试过了,但没用

标签: android scroll android-recyclerview


【解决方案1】:

我找到了解决方案。如果 Recyclerview 收到触摸事件,我只需要禁用父级的触摸事件。这是对我有用的代码 sn-p:

RecyclerView.OnItemTouchListener mScrollTouchListener = new RecyclerView.OnItemTouchListener() {
    @Override
    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
        int action = e.getAction();
        switch (action) {
            case MotionEvent.ACTION_MOVE:
                rv.getParent().requestDisallowInterceptTouchEvent(true);
                break;
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView rv, MotionEvent e) {

    }

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

    }
}; 

recyclerView.addOnItemTouchListener(mScrollTouchListener);

我在这里找到了答案:Recyclerview inside Scrollview

【讨论】:

  • 这个是给子视图应用的。像魅力一样工作。
  • 即使在触摸后垂直滚动,它仍然位于水平滚动的范围内。
  • 它会在你开始滚动孩子后阻止父母滚动
猜你喜欢
  • 2020-06-01
  • 2023-04-05
  • 1970-01-01
  • 2020-07-09
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多