RecyclerViewDivider
A RecyclerView's divider that can be customized with simple properties or advanced ones.
It supports completely LinearLayoutManager, GridLayoutManager and partially StaggeredGridLayoutManager.
Usage
If you want to use the basic version of this divider you can just add this line of code after your setAdapter() method:
RecyclerViewDivider.with(context).build().addTo(recyclerView);
Customization
All dividers in the app have default values in xml resources:
- Color → R.color.recycler_view_divider_color (default is #CFCFCF)
- Size → R.dimen.recycler_view_divider_size (default is 1dp)
- Inset before → R.dimen.recycler_view_divider_inset_before (default is 0dp)
- Inset after → R.dimen.recycler_view_divider_inset_after (default is 0dp)
It can be customized in code with properties equals for each divider:
- color(int) → change color
- drawable(Drawable) → change drawable
- tint(int) → change drawables' tint
- size(int) → change height for an horizontal divider, width for a vertical one
- inset(int, int) → change left/right inset for an horizontal divider, top/bottom for a vertical one
Example with all general properties set:
RecyclerViewDivider.with(context)
.color(color)
// OR
.drawable(drawable)
.tint(tint)
.size(size)
.inset(insetBefore, insetAfter)
.hideLastDivider()
.build()
.addTo(recyclerView);
It can also use custom managers to have a different logic for each divider:
- drawableManager(DrawableManager) → set color/drawable
- insetManager(InsetManager) → set inset
- sizeManager(SizeManager) → set size
- tintManager(TintManager) → set tint
- visibilityManager(VisibilityManager) → set visibility
Example with all managers set:
RecyclerViewDivider.with(context)
.drawableManager(new DrawableManager() {
@Override
public Drawable itemDrawable(int groupCount, int groupIndex) {
return position % 2 == 0 ? new ColorDrawable(Color.BLACK) : new ColorDrawable(Color.BLUE);
}
}
)
.insetManager(new InsetManager() {
@Override
public int itemInsetAfter(int groupCount, int groupIndex) {
return position % 2 == 0 ? 10 : 10 * 2;
}
@Override
public int itemInsetBefore(int groupCount, int groupIndex) {
return position % 2 == 0 ? 15 : 15 * 2;
}
}
)
.sizeManager(new SizeManager() {
@Override
public int itemSize(@Nullable Drawable drawable, int orientation, int groupCount, int groupIndex) {
return position % 2 == 0 ? 45 : 78;
}
}
)
.tintManager(new TintManager() {
@Override
public int itemTint(int groupCount, int groupIndex) {
return position == 0 ? Color.YELLOW : Color.GRAY;
}
}
)
.visibilityManager(new VisibilityManager() {
@Override
public int itemVisibility(int groupCount, int groupIndex) {
return groupCount % groupIndex == 0 ? SHOW_ITEMS_ONLY : SHOW_ALL;
}
}
)
.build()
.addTo(recyclerView);
You can also use this divider as a simple space between RecyclerView's items:
Example of divider as space:
RecyclerViewDivider.with(context).asSpace().build().addTo(recyclerView);
Compatibility
Android SDK: RecyclerViewDivider requires a minimum API level of 14 (the same of RecyclerView).
Integration
You can download a jar from GitHub's releases page or grab it from jcenter()
or mavenCentral()
.
Gradle
dependencies {
compile 'com.github.fondesa:recycler-view-divider:1.4.0'
}
Maven
<dependency>
<groupId>com.github.fondesa</groupId>
<artifactId>recycler-view-divider</artifactId>
<version>1.4.0</version>
<type>pom</type> </dependency>