Tab Bar — co to jest, panel zakładek w aplikacjach mobilnych

Autor: IT Sectr Opublikowano: 2026-02-22 Czas czytania: 12 min

Tab Bar — element nawigacji umieszczony w dolnej części ekranu aplikacji mobilnej, który zapewnia szybki dostęp do głównych sekcji. W iOS jest implementowany przez UITabBarController, w Android — przez BottomNavigationView z Material Design. Więcej o zasadach nawigacji przeczytasz w Human Interface Guidelines Apple.

Najważniejsze

  • Tab Bar — dolny panel nawigacji do przełączania między 3–5 głównymi sekcjami aplikacji
  • UITabBarController — standardowy komponent iOS do zarządzania zakładkami z systemowym wyglądem
  • BottomNavigationView — komponent Android z Material Design Library dla nawigacji dolnej
  • Badge — wskaźniki liczbowe na ikonach zakładek do wyświetlania powiadomień
  • Dostosowywanie — ikony, kolory, czcionki i animacje przełączania konfiguruje się przez API platformy

Czym jest Tab Bar?

Tab Bar (panel zakładek) — element interfejsu graficznego umieszczony w dolnej części ekranu aplikacji mobilnej. Zapewnia szybki dostęp do 3–5 głównych sekcji aplikacji. Każda sekcja jest reprezentowana przez ikonę i etykietę tekstową. Użytkownik naciska zakładkę, aby przełączyć się do odpowiedniej sekcji. Tab Bar pozostaje widoczny na wszystkich ekranach w obrębie każdej sekcji, zapewniając stały punkt wejścia.

Apple zaleca używanie Tab Bar dla sekcji aplikacji o równym poziomie ważności. Human Interface Guidelines (2026) wskazują: „Tab Bar pokazuje 3–5 zakładek. Jeśli potrzeba więcej — ostatnia zakładka staje się punktem „Więcej” z pozostałymi w środku”. Material Design Google (2026) zaleca Bottom Navigation dla tych samych celów — 3–5 punktów, aktywna zakładka wyróżniona kolorem i animacją.

W przeciwieństwie do górnych zakładek (Top Tab Bar), dolny panel jest wygodniejszy do obsługi jedną ręką — kciuk naturalnie sięga do dolnej części ekranu. Badanie Nielsen Norman Group (2025) wykazało, że nawigacja dolna skraca czas wykonania zadania o 22% w porównaniu z górną na smartfonach z przekątną od 6 cali.

UITabBarController w iOS

UITabBarController — wbudowany kontroler iOS do organizacji nawigacji przez zakładki. Każda zakładka zarządza własnym zestawem ekranów, zwykle zorganizowanym w UINavigationController. UITabBarController automatycznie tworzy Tab Bar w dolnej części ekranu z systemowym półprzezroczystym tłem i animacją przy przełączaniu.

swift
import UIKit

class MainTabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let homeVC = HomeViewController()
        let searchVC = SearchViewController()
        let profileVC = ProfileViewController()

        homeVC.tabBarItem = UITabBarItem(
            title: "Główna",
            image: UIImage(systemName: "house.fill"),
            tag: 0
        )
        searchVC.tabBarItem = UITabBarItem(
            title: "Szukaj",
            image: UIImage(systemName: "magnifyingglass"),
            tag: 1
        )
        profileVC.tabBarItem = UITabBarItem(
            title: "Profil",
            image: UIImage(systemName: "person.circle.fill"),
            tag: 2
        )

        let homeNav = UINavigationController(rootViewController: homeVC)
        let searchNav = UINavigationController(rootViewController: searchVC)
        let profileNav = UINavigationController(rootViewController: profileVC)

        viewControllers = [homeNav, searchNav, profileNav]
    }
}

Każda zakładka w przykładzie zawiera UINavigationController, co umożliwia wewnątrz sekcji korzystanie z nawigacji stosowej. tabBarItem konfiguruje ikonę, tytuł i badge. System automatycznie stosuje styl SF Symbols dla ikon — standardowych symboli Apple z obsługą typu dynamicznego i wielokolorowości.

BottomNavigationView w Android

BottomNavigationView — komponent Android z Material Design Library implementujący dolny panel nawigacji. W Android 13+ używany jest NavigationBarView — jego następca z ulepszoną animacją i adaptacyjnym zachowaniem. BottomNavigationView jest zgodny ze specyfikacją Material Design 3 (Material You) i obsługuje motyw aplikacji, dynamiczne kolory oraz animację przy przełączaniu.

kotlin
class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val navView: NavigationBarView = binding.navView
        val navController = findNavController(R.id.nav_host_fragment)

        // Podłączenie BottomNavigation do NavController
        navView.setupWithNavController(navController)

        // Konfiguracja badge'a na zakładce powiadomień
        val badge = navView.getOrCreateBadge(R.id.navigation_notifications)
        badge.isVisible = true
        badge.number = 12
    }
}

Komponent BottomNavigationView obsługuje Material Design 3 z trzema stylami: default (podpis + ikona), labeled (powiększony podpis) i unlabeled (tylko ikona). Metoda setupWithNavController łączy panel z Navigation Component, automatycznie aktualizując aktywną zakładkę przy zmianie ekranu. Badge są tworzone przez getOrCreateBadge i obsługują wskaźniki liczbowe i punktowe.

Badge i wskaźniki na Tab Bar

Badge — wskaźniki liczbowe lub punktowe na ikonach zakładek wyświetlające liczbę powiadomień, nowych wiadomości lub zadań. W iOS badge ustawia się przez właściwość badgeValue na UITabBarItem. W Android badge są zarządzane przez BadgeDrawable (Material 3) lub getOrCreateBadge w NavigationBarView.

Badge to potężne narzędzie zaangażowania: badania Localytics (2025) wykazały, że aplikacje z badge mają o 18% wyższy retention w 7. dniu. Jednak nadużywanie badge (więcej niż 3 jednocześnie) obniża CTR o 12%. Apple i Google zalecają pokazywanie badge tylko dla istotnych powiadomień i resetowanie go przy otwarciu sekcji.

PlatformaKomponentUstawienie badge
iOSUITabBarItem.badgeValuetabBarItem.badgeValue = "5"
AndroidBadgeDrawablebadge.number = 5
iOSBadge punktowytabBarItem.badgeColor = .red
AndroidWskaźnik punktowybadge.isVisible = true

Dostosowywanie Tab Bar: ikony, kolory, animacje

Obie platformy oferują szerokie możliwości dostosowywania Tab Bar. W iOS można zmienić kolor tła, tint color aktywnej zakładki, czcionkę podpisu i dodać niestandardowe ikony przez SF Symbols lub własne zasoby. W Android dostosowywanie obejmuje style Material 3, animację przełączania, efekt ripple i kolory dynamiczne oparte na tapecie.

swift
// Dostosowywanie Tab Bar w iOS
let appearance = UITabBarAppearance()
appearance.backgroundColor = .systemBackground
appearance.stackedLayoutAppearance.normal.titleTextAttributes = [
    .foregroundColor: UIColor.secondaryLabel,
    .font: UIFont.systemFont(ofSize: 11)
]
appearance.stackedLayoutAppearance.selected.titleTextAttributes = [
    .foregroundColor: UIColor.systemBlue,
    .font: UIFont.boldSystemFont(ofSize: 12)
]
tabBar.standardAppearance = appearance.

W Android dostosowywanie BottomNavigationView wykonuje się przez atrybuty XML lub programowo. Material 3 wprowadza koncepcję kolorów dynamicznych: paleta jest generowana z tapety użytkownika i automatycznie stosowana do komponentów. Deweloper może nadpisać kolory przez motyw, ustawić niestandardową animację podkreślenia (indicator) i skonfigurować efekt ripple.

kotlin
// Dostosowywanie BottomNavigationView w Android
val navView = findViewById<NavigationBarView>(R.id.nav_view)

with (navView) {
    labelVisibilityMode = NavigationBarView.LABEL_VISIBILITY_LABELED
    itemActiveIndicatorStyle = R.style.CustomIndicator
    itemRippleColor = ColorStateList.valueOf(
        Color.valueOf("#FFE0B2")
    )
}

// W XML: app:menu="@menu/bottom_nav_menu"
// W XML: app:itemActiveIndicatorStyle="@style/Widget.Material3.BottomNavigationView.ActiveIndicator"

Najlepsze praktyki nawigacji dolnej

Projektując Tab Bar, ważne jest przestrzeganie zaleceń platform i badań użyteczności. Apple HIG: nie więcej niż 5 zakładek, tekst zwięzły, ikony semantyczne. Material Design: 3–5 punktów, aktywny punkt wyróżniony, licznik badge nie więcej niż 99. NN Group (2025): nawigacja dolna powinna pozostać widoczna na wszystkich ekranach sekcji, w przeciwnym razie użytkownik traci kontekst.

Główne błędy: 6+ zakładek (wymusza użycie „Więcej” — obniża discoverability), zmiana kolejności zakładek podczas nawigacji (dezorientuje), ukrywanie Tab Bar na zagnieżdżonych ekranach (utrata punktu zaczepienia nawigacji). Najlepsza praktyka — stała kolejność, jednolite ikony i etykiety tekstowe, badge tylko dla działań użytkownika (nie dla marketingu).

  • 3–5 zakładek — optymalna liczba dla szybkiego wyboru bez przeciążenia
  • Stała kolejność — zakładki powinny być stabilne, bez dynamicznego przestawiania
  • Ikona + podpis — oba elementy są obowiązkowe do zrozumienia sekcji
  • Aktywna zakładka — powinna wizualnie różnić się kolorem, ikoną lub animacją
  • Badge — używaj do powiadomień, resetuj przy otwarciu sekcji

Często zadawane pytania

Ile zakładek powinien mieć Tab Bar?

Apple i Google zalecają 3–5 zakładek. Mniej niż trzy — brakuje sekcji do uzasadnienia dolnego panelu. Więcej niż pięć — przeciążenie uwagi, ostatnia zakładka staje się punktem „Więcej”. Optymalna liczba według danych NN Group (2025) — 4 zakładki.

Jaka jest różnica między Tab Bar a Bottom Navigation?

Tab Bar — termin Apple dla dolnego panelu iOS (UITabBarController). Bottom Navigation — odpowiednik w Android (BottomNavigationView). Funkcjonalnie są identyczne: szybki dostęp do 3–5 sekcji. Różnice w stylu wizualnym: iOS — półprzezroczyste tło z efektem blur, Android — stały kolor z efektem ripple.

Czy można ukryć Tab Bar na niektórych ekranach?

Tak, ale ostrożnie. W iOS — hidesBottomBarWhenPushed = true na UIViewController. W Android — View.GONE na BottomNavigationView. Najlepszą praktyką jest ukrywanie tylko na pełnoekranowych ekranach (przeglądanie zdjęć, wideo), ale przywracanie przy powrocie. Długie ukrywanie dezorientuje użytkownika.

Jak dodać badge na zakładkę Tab Bar?

W iOS ustaw tabBarItem.badgeValue = "N" (jako string). W Android użyj getOrCreateBadge(resId) na NavigationBarView. Badge automatycznie wyświetla się jako czerwone kółko z liczbą. Reset: badgeValue = nil (iOS), removeBadge(resId) lub badge.isVisible = false (Android).

Dlaczego Tab Bar jest ukrywany na iPhone X+?

Na urządzeniach z Home Indicator (iPhone X i nowsze) Tab Bar automatycznie podnosi się powyżej wskaźnika. System dodaje Safe Area Insets w dolnej części ekranu. Deweloper nie musi ręcznie dostosowywać odstępów — UIKit i Android SystemUI obsługują to automatycznie.

Podsumowanie

  • Tab Bar — dolny panel nawigacji na 3–5 zakładek, standardowy element iOS i Android
  • UITabBarController (iOS) i BottomNavigationView (Android) — implementacje platformowe
  • Badge — wskaźniki liczbowe na zakładkach dla powiadomień, zwiększają retention o 18%
  • Dostosowywanie obejmuje kolory, ikony, czcionki i animację przełączania na obu platformach
  • Najlepsze praktyki — stała kolejność, ikona + podpis, 3–5 zakładek, widoczność na wszystkich ekranach
  • Tab Bar + Navigation — każda zakładka zwykle zawiera nawigator stosowy dla zagnieżdżonych ekranów
  • Safe Area — dolny panel automatycznie dostosowuje się do Home Indicator na urządzeniach bezramkowych

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również