2017-03-17 154 views
2

我有一個RecyclerView的GridLayoutManager的子項可能有一個垂直的RecyclerView裏面。下面是截圖:RecyclerView裏面的RecyclerView不滾動

enter image description here

我創建適配器此方案。它可以正確顯示,但不管內部有多少物品,內部RecyclerView都不滾動。任何人都可以建議如何使內部和主RecyclerViews滾動?

+3

有你'設置rv.setNestedScrollingEnabled(假)'? – Piyush

+0

是的,我嘗試過,但它沒有工作 –

回答

7

我找到了解決方案。在Recyclerview收到觸摸事件的情況下,我只需要禁用父項的觸摸事件。以下是代碼片段,爲我工作:

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

+0

這是一個適用於子視圖。像魅力一樣工作。 – Fattum

+0

工作正常。好。但它的工作過於嚴格。 –

+0

即使在觸摸項目後垂直滾動,它仍位於水平滾動的範圍內。 –