Android Tabs

Class Diagram

Introduction

In Android development, tabs are a common user interface element used to display different categories or sections of content within a single screen. Tabs allow users to easily switch between different views or fragments without navigating to a different screen.

This article will provide a comprehensive guide on how to implement tabs in Android using the TabLayout and ViewPager components. We will also explore how to customize the appearance of tabs and handle tab selection events.

Setting up the Project

To get started, create a new Android project in Android Studio. Add the following dependencies to your project's build.gradle file:

implementation 'com.google.android.material:material:1.4.0'

Make sure to sync your project after adding the dependencies.

Implementing Tabs

Creating the Fragments

First, let's create the fragments that will be displayed in each tab. Create three new fragments: HomeFragment, MessagesFragment, and ProfileFragment.

public class HomeFragment extends Fragment {
    // Fragment implementation
}

public class MessagesFragment extends Fragment {
    // Fragment implementation
}

public class ProfileFragment extends Fragment {
    // Fragment implementation
}

Designing the Layout

Next, we need to design the layout for the activity that will host the tabs. Open the activity_main.xml layout file and add the following code:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabGravity="fill"
        app:tabMode="fixed" />

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

</LinearLayout>

Creating the Adapter

We need to create a PagerAdapter that will handle the tab switching and display the appropriate fragment for each tab. Create a new Java class called TabsPagerAdapter and add the following code:

public class TabsPagerAdapter extends FragmentPagerAdapter {
    private static final int NUM_TABS = 3;

    public TabsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @NonNull
    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new HomeFragment();
            case 1:
                return new MessagesFragment();
            case 2:
                return new ProfileFragment();
            default:
                throw new IllegalArgumentException("Invalid position: " + position);
        }
    }

    @Override
    public int getCount() {
        return NUM_TABS;
    }
}

Setting up the TabLayout and ViewPager

In the MainActivity class, we need to initialize the TabLayout and ViewPager components and connect them together. Add the following code to the onCreate method:

TabLayout tabLayout = findViewById(R.id.tabLayout);
ViewPager viewPager = findViewById(R.id.viewPager);

TabsPagerAdapter adapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);

tabLayout.setupWithViewPager(viewPager);

Customizing the Tabs

To customize the appearance of the tabs, you can modify the styling in the styles.xml file. For example, you can change the tab text color and background color by adding the following code:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColorSecondary">@color/colorSecondary</item>
    <item name="android:background">@color/colorBackground</item>
</style>

Conclusion

In this article, we have learned how to implement tabs in Android using the TabLayout and ViewPager components. We have also explored how to create custom fragments for each tab and customize the appearance of the tabs. By following these steps, you can easily add tabs to your Android app and provide a seamless navigation experience for your users.