<com.google.android.material.tabs.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tabs"
>
</com.google.android.material.tabs.TabLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tabContent">
</FrameLayout>
val tabLayout = binding.tabs
val tab1 : TabLayout.Tab = tabLayout.newTab()
tab1.text = "Tab1"
tabLayout.addTab(tab1)
val tab2 : TabLayout.Tab = tabLayout.newTab()
tab2.text = "Tab2"
tabLayout.addTab(tab2)
val tab3 : TabLayout.Tab = tabLayout.newTab()
tab3.text = "Tab3"
tabLayout.addTab(tab3)
tabLayout.addOnTabSelectedListener(object: TabLayout.OnTabSelectedListener{
override fun onTabSelected(tab: TabLayout.Tab?) {
val transaction = supportFragmentManager.beginTransaction()
when(tab?.text){
"Tab1"-> transaction.replace(R.id.tabContent, OneFragment())
"Tab2"-> transaction.replace(R.id.tabContent, TwoFragment())
"Tab3"-> transaction.replace(R.id.tabContent, ThreeFragment())
}
transaction.commit()
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
}
override fun onTabReselected(tab: TabLayout.Tab?) {
}
})
탭 이벤트 처리는 tabLayout.addOnTabSelectedListener
를 통해서 하며 method를 오버라이드하여 Fragment 를 변경할 수 있다.
tabGravity
속성 : fill(채워서 등분), center(가운데정렬)
tabMode
속성 : fixed(고정), scrollable(스크롤)
<com.google.android.material.tabs.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tabs"
app:tabMode="scrollable"
>
</com.google.android.material.tabs.TabLayout>
<androidx.viewpager2.widget.ViewPager2
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewpager">
</androidx.viewpager2.widget.ViewPager2>
TabLayoutMediator(tabLayout, viewPager){
tab, position -> tab.text = "Tab${(position+1)}"
}.attach()