Introduction: Super fast and easy way to create header for Android RecyclerView
More: Author   ReportBugs   

License Maven Central

Super fast and easy way to create header for Android RecyclerView.

Lets you create header View for any RecyclerView that uses LinearLayoutManager or GridLayoutManager with just a simple method call.


Although the library is super easy to use, it has some limitations.

RecyclerViewHeader is based on a ViewGroup being hovered over the RecyclerView (and properly shifted on scroll).

You need to bare in mind that the library is created to be used with relatively simple headers.

E.g. if your header uses a complex layout (with multiple scrolls and focusable elements) or a complicated Touch management system I advice you not to use RecyclerViewHeader, but a proper RecyclerView Adapter that incorporates inflating multiple types of views. There are other libraries on github (for example HeaderRecyclerView by Karumi) that might seem a bit more complicated to use, but are implementing mentioned approach and will fit your needs better.


  1. Simple header
  2. Header smaller than screen height (for vertical RecyclerView) or width (for horizontal RecyclerView)
  3. No complicated touch system (including scrollable elements)

On version 2

I created this library back in the day when I thought RecyclerView was all new and difficult. Writing an adapter that could inflate multiple types of Views seemed like a difficult job to do. Not long after I released RecyclerViewHeader I found out that's an incredibly easy task to perform especially if you have tools like HeaderRecyclerView by Karumi. Using a specialized adapter was fixing all the flaws that RecyclerViewHeader was suffering from.

The aim of the second version was to fix all the issues users were facing. The problem is, while I was developing the second version, I was thinking about killing this library multiple times. I was finding multiple aspects of the approach it presents, to be problematic for someone who doesn't understand the concept of the library thoroughly (usage with simple headers).

I decided to finish the second version as a token of gratitude, for all your support. Thank you!

Nonetheless, as of today (06/04/2016) I'm beginning the process of retiring of the RecyclerViewHeader library. Version 2.0.0 will be the last major release. The only new development will contain fixes for critical bugs (with the exception of re-enabling StaggeredGridLayoutManager support).


For a working implementation of this library see the sample/ folder.

  1. Place RecyclerViewHeader layout above (z-order-wise) your RecyclerView at the top part of it.

  2. Get the RecyclerViewHeader view object with:

    RecyclerViewHeader header = (RecyclerViewHeader) findViewById(;

  3. Attach RecyclerViewHeader to your RecyclerView:

    RecyclerView recyclerView = (RecyclerView) findViewById(; // set LayoutManager for your RecyclerView header.attachTo(recyclerView);

Important notes

RecyclerViewHeader needs to be called after you've set the LayoutManager for your RecyclerView.

Current implementation of the library can be used with RecyclerViews that use LinearLayoutManager or GridLayoutManager.

Including In Your Project

You can grab the library via Maven Central. Just add a proper dependency inside your build.gradle. Like this:

dependencies {
    compile 'com.bartoszlipinski:recyclerviewheader2:2.0.1'

Developed by

  • Bartosz Lipiński


Copyright 2015 Bartosz Lipiński

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.
Support Me
About Me
Google+: Trinea trinea
GitHub: Trinea