Tab Bar — nó là gì, bảng tab trong ứng dụng di động

Tác giả: IT Sectr Đã đăng: 2026-02-22 Thời gian đọc: 12 phút

Tab Bar là một phần tử điều hướng nằm ở cuối màn hình của ứng dụng di động, cung cấp truy cập nhanh đến các phần chính. Trên iOS nó được triển khai qua UITabBarController, trên Android qua BottomNavigationView của Material Design. Tìm hiểu thêm về nguyên tắc điều hướng trong Hướng dẫn Giao diện Người dùng Apple.

Những Điểm Chính

  • Tab Bar — bảng điều hướng dưới cùng để chuyển đổi giữa 3–5 phần chính của ứng dụng
  • UITabBarController — thành phần iOS tiêu chuẩn để quản lý tab với giao diện hệ thống
  • BottomNavigationView — thành phần Android từ Material Design Library cho điều hướng dưới cùng
  • Huy hiệu — chỉ thị số trên biểu tượng tab để hiển thị thông báo
  • Tùy chỉnh — biểu tượng, màu sắc, phông chữ và hoạt ảnh chuyển đổi được cấu hình qua API nền tảng

Tab Bar là gì?

Tab Bar (thanh tab) là một phần tử giao diện đồ họa nằm ở cuối màn hình của ứng dụng di động. Nó cung cấp truy cập nhanh đến 3–5 phần chính của ứng dụng. Mỗi phần được đại diện bằng một biểu tượng và nhãn văn bản. Người dùng chạm vào một tab để chuyển đến phần tương ứng. Tab Bar vẫn hiển thị trên tất cả các màn hình trong mỗi phần, cung cấp một điểm vào liên tục.

Apple khuyên dùng Tab Bar cho các phần có tầm quan trọng ngang nhau. Hướng dẫn Giao diện Người dùng (2026) nêu rõ: "Tab Bar hiển thị 3–5 tab. Nếu cần nhiều hơn, tab cuối cùng trở thành mục 'Thêm' chứa phần còn lại." Material Design của Google (2026) khuyên dùng Bottom Navigation cho cùng mục đích — 3–5 mục, tab hoạt động được làm nổi bật bằng màu sắc và hoạt ảnh.

Không giống như thanh tab trên cùng, bảng dưới cùng thuận tiện hơn cho thao tác bằng một tay — ngón tay cái dễ dàng chạm đến cuối màn hình. Nghiên cứu của Nielsen Norman Group (2025) cho thấy điều hướng dưới cùng giảm thời gian hoàn thành tác vụ 22% so với điều hướng trên cùng trên điện thoại thông minh có màn hình từ 6 inch trở lên.

UITabBarController trong iOS

UITabBarController là bộ điều khiển tích hợp sẵn của iOS để tổ chức điều hướng qua các tab. Mỗi tab quản lý bộ màn hình riêng của nó, thường được tổ chức trong UINavigationController. UITabBarController tự động tạo Tab Bar ở cuối màn hình với nền trong suốt của hệ thống và hoạt ảnh chuyển đổi.

swift
import UIKit

class MainTabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

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

        homeVC.tabBarItem = UITabBarItem(
            title: "Trang chủ",
            image: UIImage(systemName: "house.fill"),
            tag: 0
        )
        searchVC.tabBarItem = UITabBarItem(
            title: "Tìm kiếm",
            image: UIImage(systemName: "magnifyingglass"),
            tag: 1
        )
        profileVC.tabBarItem = UITabBarItem(
            title: "Hồ sơ",
            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]
    }
}

Mỗi tab trong ví dụ chứa một UINavigationController, cho phép điều hướng ngăn xếp bên trong phần. tabBarItem cấu hình biểu tượng, tiêu đề và huy hiệu. Hệ thống tự động áp dụng kiểu SF Symbols cho biểu tượng — các ký hiệu tiêu chuẩn của Apple hỗ trợ kiểu động và đa màu sắc.

BottomNavigationView trong Android

BottomNavigationView là một thành phần Android từ Material Design Library triển khai bảng điều hướng dưới cùng. Trong Android 13+, NavigationBarView được sử dụng — phiên bản kế nhiệm với hoạt ảnh cải tiến và hành vi thích ứng. BottomNavigationView tuân theo đặc tả Material Design 3 (Material You) và hỗ trợ chủ đề ứng dụng, màu sắc động và hoạt ảnh chuyển đổi.

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)

        // Liên kết BottomNavigation với NavController
        navView.setupWithNavController(navController)

        // Thiết lập huy hiệu trên tab thông báo
        val badge = navView.getOrCreateBadge(R.id.navigation_notifications)
        badge.isVisible = true
        badge.number = 12
    }
}

Thành phần BottomNavigationView hỗ trợ Material Design 3 với ba kiểu: default (nhãn + biểu tượng), labeled (nhãn lớn hơn) và unlabeled (chỉ biểu tượng). Phương thức setupWithNavController liên kết bảng với Navigation Component, tự động cập nhật tab hoạt động khi thay đổi màn hình. Huy hiệu được tạo qua getOrCreateBadge và hỗ trợ chỉ thị số và chấm.

Huy hiệu và Chỉ thị trên Tab Bar

Huy hiệu là chỉ thị số hoặc chấm trên biểu tượng tab, hiển thị số lượng thông báo, tin nhắn mới hoặc tác vụ. Trên iOS, huy hiệu được đặt qua thuộc tính badgeValue trên UITabBarItem. Trên Android, huy hiệu được quản lý qua BadgeDrawable (Material 3) hoặc getOrCreateBadge trong NavigationBarView.

Huy hiệu là một công cụ tương tác mạnh mẽ: nghiên cứu của Localytics (2025) cho thấy ứng dụng có huy hiệu có tỷ lệ giữ chân cao hơn 18% vào ngày thứ 7. Tuy nhiên, lạm dụng huy hiệu (hơn 3 cùng lúc) làm giảm CTR 12%. Apple và Google khuyên chỉ hiển thị huy hiệu cho thông báo liên quan và đặt lại khi mở phần.

Nền tảngThành phầnĐặt huy hiệu
iOSUITabBarItem.badgeValuetabBarItem.badgeValue = "5"
AndroidBadgeDrawablebadge.number = 5
iOSHuy hiệu chấmtabBarItem.badgeColor = .red
AndroidChỉ thị chấmbadge.isVisible = true

Tùy chỉnh Tab Bar: Biểu tượng, Màu sắc, Hoạt ảnh

Cả hai nền tảng đều cung cấp các tùy chọn tùy chỉnh rộng rãi cho Tab Bar. Trên iOS, bạn có thể thay đổi màu nền, màu tint của tab hoạt động, phông chữ nhãn và thêm biểu tượng tùy chỉnh qua SF Symbols hoặc tài sản riêng. Trên Android, tùy chỉnh bao gồm kiểu Material 3, hoạt ảnh chuyển đổi, hiệu ứng gợn sóng và màu sắc động dựa trên hình nền.

swift
// Tùy chỉnh Tab Bar trong 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.

Trên Android, tùy chỉnh BottomNavigationView được thực hiện qua thuộc tính XML hoặc lập trình. Material 3 giới thiệu khái niệm màu sắc động: bảng màu được tạo từ hình nền của người dùng và tự động áp dụng cho các thành phần. Nhà phát triển có thể ghi đè màu sắc qua chủ đề, đặt hoạt ảnh chỉ thị tùy chỉnh và cấu hình hiệu ứng gợn sóng.

kotlin
// Tùy chỉnh BottomNavigationView trong 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")
    )
}

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

Thực hành Tốt nhất cho Điều hướng Dưới cùng

Khi thiết kế Tab Bar, điều quan trọng là tuân theo các khuyến nghị của nền tảng và nghiên cứu về khả năng sử dụng. Apple HIG: không quá 5 tab, văn bản ngắn gọn, biểu tượng ngữ nghĩa. Material Design: 3–5 mục, mục hoạt động được làm nổi bật, bộ đếm huy hiệu không quá 99. NN Group (2025): điều hướng dưới cùng nên hiển thị trên tất cả các màn hình của phần, nếu không người dùng sẽ mất ngữ cảnh.

Các lỗi phổ biến: 6+ tab (buộc phải sử dụng 'Thêm' — giảm khả năng khám phá), thay đổi thứ tự tab khi điều hướng (làm người dùng mất phương hướng), ẩn Tab Bar trên màn hình lồng nhau (mất neo điều hướng). Thực hành tốt nhất bao gồm thứ tự cố định, biểu tượng và nhãn văn bản nhất quán, huy hiệu chỉ cho hành động của người dùng (không phải tiếp thị).

  • 3–5 tab — số lượng tối ưu để chọn nhanh mà không quá tải
  • Thứ tự cố định — các tab nên ổn định, không sắp xếp lại động
  • Biểu tượng + nhãn — cả hai yếu tố đều cần thiết để hiểu phần
  • Tab hoạt động — nên khác biệt trực quan bằng màu sắc, biểu tượng hoặc hoạt ảnh
  • Huy hiệu — sử dụng cho thông báo, đặt lại khi mở phần

Câu hỏi Thường gặp

Tab Bar nên có bao nhiêu tab?

Apple và Google khuyên dùng 3–5 tab. Ít hơn ba — không đủ phần để biện minh cho bảng dưới cùng. Nhiều hơn năm — quá tải nhận thức, tab cuối cùng trở thành mục 'Thêm'. Số lượng tối ưu theo NN Group (2025) là 4 tab.

Sự khác biệt giữa Tab Bar và Bottom Navigation là gì?

Tab Bar là thuật ngữ của Apple cho bảng dưới cùng iOS (UITabBarController). Bottom Navigation là tương đương trên Android (BottomNavigationView). Về mặt chức năng, chúng giống hệt nhau: truy cập nhanh đến 3–5 phần. Sự khác biệt nằm ở phong cách trực quan: iOS — nền trong suốt với hiệu ứng mờ, Android — màu cố định với hiệu ứng gợn sóng.

Tôi có thể ẩn Tab Bar trên một số màn hình không?

Có, nhưng cần thận trọng. Trong iOS — hidesBottomBarWhenPushed = true trên UIViewController. Trong Android — View.GONE trên BottomNavigationView. Thực hành tốt nhất là chỉ ẩn trên màn hình toàn màn hình (xem ảnh, video) và khôi phục khi quay lại. Ẩn kéo dài làm người dùng mất phương hướng.

Làm thế nào để thêm huy hiệu vào tab Tab Bar?

Trong iOS, đặt tabBarItem.badgeValue = "N" (dưới dạng chuỗi). Trong Android, sử dụng getOrCreateBadge(resId) trên NavigationBarView. Huy hiệu tự động hiển thị dưới dạng vòng tròn màu đỏ với số. Để xóa: badgeValue = nil (iOS), removeBadge(resId) hoặc badge.isVisible = false (Android).

Tại sao Tab Bar bị ẩn trên iPhone X+?

Trên các thiết bị có Home Indicator (iPhone X trở lên), Tab Bar tự động nâng lên trên chỉ thị. Hệ thống thêm Safe Area Insets ở cuối màn hình. Nhà phát triển không cần điều chỉnh lề thủ công — UIKit và Android SystemUI xử lý việc này tự động.

Tổng Kết

  • Tab Bar — bảng điều hướng dưới cùng với 3–5 tab, một phần tử tiêu chuẩn trên iOS và Android
  • UITabBarController (iOS) và BottomNavigationView (Android) là các triển khai cụ thể theo nền tảng
  • Huy hiệu — chỉ thị số trên tab cho thông báo, tăng tỷ lệ giữ chân 18%
  • Tùy chỉnh bao gồm màu sắc, biểu tượng, phông chữ và hoạt ảnh chuyển đổi trên cả hai nền tảng
  • Thực hành tốt nhất — thứ tự cố định, biểu tượng + nhãn, 3–5 tab, hiển thị trên tất cả màn hình
  • Tab Bar + Điều hướng — mỗi tab thường chứa bộ điều hướng ngăn xếp cho màn hình lồng nhau
  • Safe Area — bảng dưới cùng tự động thích ứng với Home Indicator trên thiết bị không viền

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm