Search code examples
androidandroid-recyclerviewgridlayoutmanager

RecyclerView GridLayoutManager with full width header


I'm using a very helpful example here to show a RecyclerView and a GridLayoutManager to show a grid with a header.

It looks pretty good, but my graphic designer wants the header item to take up the full width of the RecyclerView. Right now there is padding.

When I set up the GridLayoutManager I add in padding (which I still want for the other grid items): [it's using Xamarin C#]

var numColumns = myListView.MeasuredWidth / tileSizeMax;
myGridView.SetPadding(tilePadding, tilePadding, tilePadding, tilePadding);
layoutManager = new GridLayoutManager(Activity, numColumns);
myListView.SetLayoutManager(layoutManager);

So, how can I set the padding to be different for the header item...or make it draw itself over the padding?


Solution

  • Try with this:

    mLayoutManager = new GridLayoutManager(this, 2);
            mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
                @Override
                public int getSpanSize(int position) {
                    switch(mAdapter.getItemViewType(position)){
                        case MyAdapter.HEADER:
                            return 2;
    
                        case MyAdapter.ITEM:
                        default:
                            return 1;
                    }
                }
            });
    

    And check these links: