How to use TabLayout with Viewpager in Android Studio like WhatsApp?

0

TabLayout with Viewpager


Introduction: we will make a demo app for better understanding . Here tab lisnear and pageChange Lisnear use like WhatsApp.


First Add this Dependency :

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

Create 3 Fragments named ChatFragment, StatusFragment and CallFragment

then create a java class named PageAdapter 

PageAdapter.java :

public class PageAdapter extends FragmentPagerAdapter {

int tabCount;

public PageAdapter(@NonNull FragmentManager fm, int behavior) {
super(fm, behavior);
tabCount=behavior;
}

@NonNull
@Override
public Fragment getItem(int position) {

switch (position){
case 0: return new ChatFragment();
case 1: return new StatusFragment();
case 2: return new CallFragment();
default: return null;
}

}

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

activity_main.xml :

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0E9784">

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:fontFamily="sans-serif-smallcaps"
android:gravity="center_vertical"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:text="DemoApp"
android:textColor="@android:color/white"
android:textSize="18dp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />


</androidx.constraintlayout.widget.ConstraintLayout>

</androidx.appcompat.widget.Toolbar>

</LinearLayout>


<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="8dp"
android:background="#00BFA5"
app:tabIndicatorColor="@android:color/white"
app:tabSelectedTextColor="@android:color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout3">

<com.google.android.material.tabs.TabItem
android:id="@+id/tab1"
android:layout_width="wrap_content"
android:text="Chat"
android:layout_height="wrap_content"
/>

<com.google.android.material.tabs.TabItem
android:id="@+id/tab2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Status"
/>

<com.google.android.material.tabs.TabItem
android:id="@+id/tab3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Call"
/>
</com.google.android.material.tabs.TabLayout>

<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:layout_constraintBottom_toTopOf="@+id/banner_container"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tabLayout" />

<LinearLayout
android:id="@+id/banner_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java :

public class MainActivity extends AppCompatActivity {

private TabLayout tabLayout;
private TabItem tab1,tab2,tab3;
private ViewPager viewPager;
private PagerAdapter pagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

init();

pagerAdapter= new PageAdapter(getSupportFragmentManager(),tabLayout.getTabCount());
viewPager.setAdapter(pagerAdapter);

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());

if (tab.getPosition() == 0 || tab.getPosition() ==1 || tab.getPosition() ==2){
pagerAdapter.notifyDataSetChanged();
}

}

@Override
public void onTabUnselected(TabLayout.Tab tab) {

}

@Override
public void onTabReselected(TabLayout.Tab tab) {

}
});

viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));


}


private void init() {
tabLayout=findViewById(R.id.tabLayout);
tab1=findViewById(R.id.tab1);
tab2=findViewById(R.id.tab2);
tab3=findViewById(R.id.tab3);
viewPager=findViewById(R.id.viewPager);
}


}

Our Demo app finally completed now. I think it will helpful tutorial for you.

                            Thank You

                                                Keep Learning

                                                                         KeepGrowing

Post a Comment

0Comments
Post a Comment (0)