2017-03-06 160 views
1

我试图建立一个GridLayoutManager具有每行一个变量列数,像这样一算RecyclerView同一行中的项目总是屏幕宽度。GridLayoutManager与不同的列每列

我试图重新组织的项目列表,按行的名单将它们分组,然后充气每行一个LinearLayout中。它工作不太好。

所以我坚持和的想法。任何帮助将非常感激

回答

2

您可以使用GridLayoutManager。要在行中有不同的列数,您必须覆盖setSpanSizeLookup

例子:

//spanCount = 3 (just for example) 
GridLayoutManager gridLayoutManager = new GridLayoutManager(getAppContext(), spanCount); 
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
    @Override 
    public int getSpanSize(int position) { 
     //define span size for this position 
     //some example for your first three items 
     if(position == item1) { 
      return 1; //item will take 1/3 space of row 
     } else if(position == item2) { 
      return 2; //you will have 2/3 space of row 
     } else if(position == item3) { 
      return 3; //you will have full row size item 
     } 
    } 
}); 

我的代码示例上面我只显示有您可以更改项目的大小。要注意的是spanSize < = spanCount

+0

的问题是spanCount每行变量,但还是谢谢你!我最终使用了12作为spanCount,并进行了一些计算来调整宽度。 Usin 12,它可以正常工作,每行1,2,3和4个元素。不与5的例子,但它不是一个常见的情况 – moyo

+0

@moyo是的,你必须做出以任何方式计算一下:) –