要建立這樣的layout有兩個挑戰必須克服
1.如何動態切換column
2.如何動態切換layout
1.如何動態切換column
要解決這個問題,我們可以使用 GridLayoutManager裡的method setSpanSizeLookup
SpanSizeLookup可以幫我們決定特定position的span是多少,
for example:
mManager = new GridLayoutManager(this,2);
代表著這個gridlayout每一行的Span size都會是2,當某個item的SpanSize 為 1則該行可以放兩個item,當某個item的SpanSize為2則該行只能放一個item,利用這個特性,我們就可以改變我們的layout每行的個數. 這樣我們就能動態的切換column數了
如下,當改變mViewSpan則每行item的數量就會改變
((GridLayoutManager) layout).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int i) {
return ((GridLayoutManager) getLayoutManager()).getSpanCount() - mViewSpan +1;
}
});
在我們解決切換column的問題之後,接著要處理的就是如何動態切換layout
所幸這個問題非常容易解決,我們只需要修改getItemViewType,根據不同的type回傳不同的值,再利用onCreateView去實作不同的view即可.
最後還是要附上sample code
沒有留言:
張貼留言