Ответ
Да, работал с приложениями с TabBar, используя как стандартные компоненты Android (TabLayout + ViewPager2), так и кастомные решения.
Пример с TabLayout и ViewPager2:
val viewPager = findViewById<ViewPager2>(R.id.viewPager)
val tabLayout = findViewById<TabLayout>(R.id.tabLayout)
viewPager.adapter = MyPagerAdapter(this)
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
tab.text = "Tab ${position + 1}"
}.attach()
Нюансы:
- Производительность: Для сложных фрагментов используем
FragmentStateAdapter. - Кастомизация: Можно менять иконки, добавлять бейджи, анимации.
- Jetpack Compose: В современных проектах использую
TabRow+Pagerиз Accompanist.
Если нужно сложное поведение (например, скрытие/показ табов), делал кастомные решения на BottomNavigationView или ConstraintLayout.