RecyclerTabLayout alternatives and similar packages
Based on the "Navigation" category.
Alternatively, view RecyclerTabLayout alternatives based on common mentions on social networks and blogs.
-
Compose Destinations
Annotation processing library for type-safe Jetpack Compose navigation with no boilerplate. -
Bubble Navigation
๐ [Android Library] A light-weight library to easily make beautiful Navigation Bar with ton of ๐จ customization option. -
AnimatedBottomBar
A customizable and easy to use BottomBar navigation view with sleek animations, with support for ViewPager, ViewPager2, NavController, and badges. -
Alligator
Alligator is Android navigation library that will help to organize your navigation code in clean and testable way. -
PagerSlidingTabStrip
An interactive indicator to navigate between the different pages of a ViewPager -
Okuki
Okuki is a simple, hierarchical navigation bus and back stack for Android, with optional Rx bindings, and Toothpick DI integration. -
Dual-color-Polyline-Animation
This library will help to show the polyline in dual color similar as Uber. -
Facilis
A sleek, out of the box, easy to understand and use, swipe gesture based Navigational Library for android. -
AndroidBriefActions
DISCONTINUED. Android library for sending and observing non persistent actions such as showing a message; nice readable way to call navigation actions from ViewModel or Activity/Fragment.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of RecyclerTabLayout or a related project?
README
RecyclerTabLayout
An efficient TabLayout library implemented with RecyclerView.
Features
- Efficient when having many tabs
- Easy setup with ViewPager (same as TabLayout of Android Design Support Library)
- RTL layout support
UseCase
- Many tabs layout
- Infinite loop scrolling (imitated)
Demos
[Years](art/years.gif)
[Loop](art/loop.gif)
[Basic](art/basic.gif)
[Icon](art/icon.gif)
Samples
Getting started
In your build.gradle:
repositories {
jcenter()
}
dependencies {
compile 'com.nshmura:recyclertablayout:1.5.0'
}
Define RecyclerTabLayout
in xml layout with custom attributes.
<com.nshmura.recyclertablayout.RecyclerTabLayout
android:id="@+id/recycler_tab_layout"
android:layout_width="match_parent"
android:layout_height="48dp"
rtl_tabIndicatorColor="?attr/colorAccent"
rtl_tabIndicatorHeight="2dp"
rtl_tabBackground="?attr/selectableItemBackground"
rtl_tabTextAppearance="@android:style/TextAppearance.Small"
rtl_tabSelectedTextColor="?android:textColorPrimary"
rtl_tabMinWidth="72dp"
rtl_tabMaxWidth="264dp"
rtl_tabPaddingStart="12dp"
rtl_tabPaddingTop="0dp"
rtl_tabPaddingEnd="12dp"
rtl_tabPaddingBottom="0dp"
rtl_tabPadding="0dp"/>
Set up with the ViewPager.
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
viewPager.setAdapter(adapter);
RecyclerTabLayout recyclerTabLayout = (RecyclerTabLayout) findViewById(R.id.recycler_tab_layout);
recyclerTabLayout.setUpWithViewPager(viewPager);
Or set up with ViewPager and Custom RecyclerView.Adapter that's extends RecyclerTabLayout.Adapter
.
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
viewPager.setAdapter(adapter);
RecyclerTabLayout recyclerTabLayout = (RecyclerTabLayout) findViewById(R.id.recycler_tab_layout);
recyclerTabLayout.setUpWithAdapter(new CustomRecyclerViewAdapter(viewPager));
Here's sample of custom RecyclerView adapter.
public class CustomRecyclerViewAdapter extends RecyclerTabLayout.Adapter<CustomRecyclerViewAdapter.ViewHolder> {
public DemoCustomView01Adapter(ViewPager viewPager) {
super(viewPager);
...
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Inflate your view.
View view = ...;
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// Bind data
...
if (position == getCurrentIndicatorPosition()) {
//Highlight view
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
...
public ViewHolder(View itemView) {
super(itemView);
...
}
}
}
Attributes
attr | description |
---|---|
rtl_tabIndicatorColor | Indicator color |
rtl_tabIndicatorHeight | Indicator height |
rtl_tabBackground | Background drawable of each tab |
rtl_tabTextAppearance | TextAppearence of each tab |
rtl_tabSelectedTextColor | Text color of selected tab |
rtl_tabOnScreenLimit | The number of OnScreen tabs. If this value is larger than 0, rtl_tabMinWidth and rtl_tabMaxWidth are ignored. |
rtl_tabMinWidth | Minimum width of each tab |
rtl_tabMaxWidth | Maximum width of each tab |
rtl_tabPaddingStart | The padding of the start edge of each tab |
rtl_tabPaddingTop | The padding of the top edge of each tab |
rtl_tabPaddingEnd | The padding of the end edge of each tab |
rtl_tabPaddingBottom | The padding of the bottom edge of each tab |
rtl_tabPadding | The padding of all four edges of each tab |
rtl_scrollEnabled | Sets whether tab scrolling is enabled |
[default attribute](library/src/main/res/values/styles.xml)
Thanks
The demo app uses the following resources.
color-names by codebrainz https://github.com/codebrainz/color-names
Material Design icons by Google https://github.com/google/material-design-icons
License
Copyright (C) 2017 nshmura
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
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*Note that all licence references and agreements mentioned in the RecyclerTabLayout README section above
are relevant to that project's source code only.