1

如何创建偶数行3列,奇数行4列的网格再生器视图?网格再生器视图,偶数行3列,奇数行4列

lLayout = new GridLayoutManager(getActivity(), 4, LinearLayoutManager.VERTICAL, false); // MAX NUMBER OF SPACES 

    lLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      return (position % 3 == 0 ? 3 : 4); 
     } 
    }); 

    recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView); 
    recyclerView.setLayoutManager(lLayout); 

    if (arrayList != null) { 
     adapter = new RecyclerViewAdapter(getActivity(), arrayList); 
     recyclerView.setAdapter(adapter); 
    } 

回答

3

试试这个,

// Create a grid layout with 12 columns 
    // (least common multiple of 3 and 4) 
GridLayoutManager manager = new GridLayoutManager(this, 12, GridLayoutManager.VERTICAL, false); 
     manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
      @Override 
      public int getSpanSize(int position) { 
       // 7 is the sum of items in one repeated section 
       switch (position % 7) { 
        // first three items span 3 columns each 
        case 0: 
        case 1: 
        case 2: 
         return 4; 
        // next four items span 2 columns each 

        case 3: 
        case 4: 
        case 5: 
        case 6: 
         return 3; 
       } 
       throw new IllegalStateException("internal error"); 
      } 
     }); 
     recyclerView.setLayoutManager(manager); 

See this:

+0

它是与每行一个colomn @PeterSmith –

+0

请检查更新的答案。 @AshithVL –

+0

非常感谢你,,,工作,...但包含3 colomn的行中的文本是不是在中心...为什么 –

0

尝试这样的事情

layoutManager = new GridLayoutManager(getActivity(), 4); 
    layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      if (position % 3 == 0) 
       return 3; 
      else 
       return 4; 
     } 
    }); 
    recyclerView.setLayoutManager(layoutManager); 

希望这有助于

+0

它与每行一个colomn @Valdio –

+0

未来ÿ ou应该删除您的代码 –

+0

上的setHasFixedSize行删除,但仍然没有得到 –