반응형
1) 기본 tablayout
class HomeFragment: BaseFragment<ViewpagerNestTabBinding>(ViewpagerNestTabBinding::bind,
R.layout.viewpager_nest_tab) {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
val pagerAdapter = PagerFragmentStateAdapter(requireActivity())
// 3개의 Fragment Add
pagerAdapter.addFragment(TodoFragment())
pagerAdapter.addFragment(MemoFragment())
pagerAdapter.addFragment(RuleFragment())
pagerAdapter.addFragment(NVFragment())
pagerAdapter.addFragment(MemFragment())
// Adapter
binding.vpInner.adapter = pagerAdapter
binding.vpInner.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
}
})
val tabTextArray = arrayOf("할일", "메모", "규칙", "공지/투표", "멤버")
// TabLayout attach
TabLayoutMediator(binding.nestTabTop, binding.vpInner) { tab, position ->
tab.text = tabTextArray[position]
}.attach()
binding.vpInner.isUserInputEnabled = false //스와이프해서 탭 아이템 넘어가는것을 허용할것인지?
}
}
2) tablayout의 tab 동적생성
//서버에서 탭 목록 받아오고 난 뒤에 동적생성하는 과정을 가져온 코드
override fun onGetPickedCategoryListSuccess(response: CategoryListResponse) {
dismissLoadingDialog()
binding.pickedCatTab.removeAllTabs() //기존의 모든 탭을 지우고
for (e in response.result) { //탭 아이템 추가
binding.pickedCatTab.addTab(binding.pickedCatTab.newTab().setText(e.categoryName))
}
//탭 클릭 리스너
binding.pickedCatTab.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener{
override fun onTabSelected(tab: TabLayout.Tab?) {
//선택한 탭 아이템을 받아오는 부분
clickedCatName = binding.pickedCatTab.getTabAt(binding.pickedCatTab.selectedTabPosition)
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
}
override fun onTabReselected(tab: TabLayout.Tab?) {
}
})
}
반응형
'Android' 카테고리의 다른 글
[Android] MVVM / LiveData, ViewModel, Databinding / AAC - 개념 (0) | 2021.10.15 |
---|---|
[Android/Kotlin] 자주쓰는 Retrofit 인터페이스 정리 (0) | 2021.08.20 |
[Android/Kotlin] Viewpager2로 이미지 슬라이드 & indicator (0) | 2021.08.20 |
[Android/Kotlin] BottomNavigationView (0) | 2021.08.20 |
[Android] ConstraintLayout (0) | 2021.06.19 |