Custom Tabs with Material Design animations for pre-Lollipop devices
Download example apk with Text
Download example apk with Icon
It requires 14+ API and android support v7 (Toolbar)
Dependency: Android-UI Reveal Color View
define it in xml layout ```xml ``` ( I'm working on use wrap_content instead 48dp)change your base theme style to AppCompat ( res/values/styles.xml ) and add Lollipop default variables.
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/light_blue_500</item>
<item name="colorPrimaryDark">@color/light_blue_800</item>
<item name="colorAccent">@color/grey_1000</item>
<item name="windowActionBar">false</item>
</style>
Connect to java code and add to viewPager
MaterialTabHost tabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabHost = (MaterialTabHost) this.findViewById(R.id.materialTabHost);
pager = (ViewPager) this.findViewById(R.id.viewpager);
// init view pager
pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
pager.setAdapter(pagerAdapter);
pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// when user do a swipe the selected tab change
tabHost.setSelectedNavigationItem(position);
}
});
// insert all tabs from pagerAdapter data
for (int i = 0; i < pagerAdapter.getCount(); i++) {
tabHost.addTab(
tabHost.newTab()
.setIcon(getIcon(i))
.setTabListener(this)
);
}
}
@Override
public void onTabSelected(MaterialTab tab) {
// when the tab is clicked the pager swipe content to the tab position
pager.setCurrentItem(tab.getPosition());
}
N.B. Your activity must extends ActionBarActivity implements MaterialTabListener
Add this to your build.gradle: ```java dependencies { compile project(':MaterialTabsModule') } ``` Actually, this library have some limitations: - No scrollable tabs for tablets - No selector animations
These problems are currently in development