2017-03-06 77 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是的,你必須做出以任何方式計算一下:) –