Đang tải...

Tooltips trong Material 3 Jetpack Compose: nhỏ nhưng rất “có võ”

09/05/2026
4 phút đọc
Tooltips trong Material 3 Jetpack Compose: nhỏ nhưng rất “có võ”
Tooltip là một trong những UI component nhỏ nhưng mang lại trải nghiệm rất tốt nếu dùng đúng cách. Trong Jetpack Compose với Material 3, tooltip đã được hỗ trợ chí...

Tooltip là một trong những UI component nhỏ nhưng mang lại trải nghiệm rất tốt nếu dùng đúng cách.

Trong Jetpack Compose với Material 3, tooltip đã được hỗ trợ chính thức, giúp bạn dễ dàng cung cấp thêm ngữ cảnh cho UI mà không làm rối layout.


Tooltip trong Compose là gì?

Tooltip là một thành phần UI hiển thị thông tin ngắn gọn khi người dùng:

  • Hover (desktop)
  • Long press (mobile)

Material 3 trong Compose cung cấp sẵn các loại tooltip để bạn sử dụng trực tiếp thay vì phải tự build như trước. :contentReference[oaicite:0]{index=0}


Các loại Tooltip trong Material 3

Có 2 loại chính:

1. Plain Tooltip

Dùng cho mô tả ngắn, đơn giản:

  • Label cho icon
  • Giải thích nhanh chức năng
PlainTooltipBox(
 tooltip = { Text("Add to favorites") }
) {
 IconButton(
 onClick = {},
 modifier = Modifier.tooltipTrigger()
 ) {
 Icon(Icons.Default.Favorite, contentDescription = null)
 }
}

a.gif

Đặc điểm:

  • Nhẹ
  • Hiển thị nhanh
  • Không có nhiều tương tác

2. Rich Tooltip

Dùng khi cần nội dung chi tiết hơn:

  • Có title
  • Có description
  • Có thể có action
RichTooltipBox(
 title = { Text("Title") },
 text = { Text("More detailed explanation here") }
) {
 IconButton(
 onClick = {},
 modifier = Modifier.tooltipTrigger()
 ) {
 Icon(Icons.Default.Info, contentDescription = null)
 }
}

b.gif Đặc điểm:

  • Nội dung phong phú hơn
  • Có thể chứa nhiều thông tin
  • Phù hợp onboarding hoặc hướng dẫn

Cách hoạt động của Tooltip

Để tooltip hoạt động, bạn cần 2 phần:

  1. Wrapper (TooltipBox, PlainTooltipBox, RichTooltipBox)
  2. Anchor (Modifier.tooltipTrigger() hoặc tương đương)

👉 Tooltip sẽ gắn vào anchor và tự xử lý vị trí hiển thị. ([BoltUiX][1])


Tùy chỉnh vị trí Tooltip

Material 3 cho phép bạn kiểm soát vị trí hiển thị:

  • Trên (top)
  • Dưới (bottom)
  • Trái / phải

Bạn có thể dùng:

TooltipDefaults.rememberPlainTooltipPositionProvider()

Hoặc custom position nếu cần layout đặc biệt. ([BoltUiX][1])


Khi nào nên dùng Tooltip?

Tooltip phù hợp khi:

  • UI có icon không rõ nghĩa
  • Không muốn thêm text trực tiếp vào layout
  • Cần cung cấp hint nhanh cho user

Không nên dùng khi:

  • Nội dung quá dài
  • Thông tin quan trọng (user có thể bỏ lỡ)

Một số lưu ý quan trọng

  • Tooltip không thay thế label chính
  • Không nên phụ thuộc hoàn toàn vào tooltip
  • Trên mobile, user phải long press → UX cần cân nhắc

Một insight đáng chú ý

Trước đây:

  • Compose không có tooltip chính thức
  • Dev phải tự build hoặc dùng workaround

Hiện tại:

  • Material 3 đã cung cấp sẵn API
  • Dễ dùng hơn nhiều
  • Consistent với design system

Tổng kết

Tooltip trong Compose Material 3:

  • Dễ dùng
  • Có sẵn nhiều loại
  • Hỗ trợ custom vị trí

Nếu dùng đúng:

  • UI gọn hơn
  • UX rõ ràng hơn
  • Không cần nhồi nhét quá nhiều text

Kết luận

Tooltip không phải là component lớn.

Nhưng nếu dùng đúng chỗ, nó giúp app của bạn “tinh tế” hơn rất nhiều.

📚 Nguồn: Viblo

Chia sẻ bài viết

Cần tư vấn?

Liên hệ với chúng tôi để được hỗ trợ

Liên hệ ngay

Bài viết liên quan

Đừng để Queue Worker "đột tử": Giải phẫu DB::disableQueryLog() chống Memory Leak trong Laravel
09/05/2026

Đừng để Queue Worker "đột tử": Giải phẫu DB::disableQueryLog() chống Memory Leak trong Laravel

Chào anh em cộng đồng Viblo! Hôm nay chúng ta sẽ cùng mổ xẻ một vấn đề mà tôi cá là 90% anh em làm backend Laravel sớm muộn gì cũng sẽ gặp phải khi hệ thống ...

Đọc thêm
How I Built A Real-time Streaming Market Data with .NET and ReactJS
09/05/2026

How I Built A Real-time Streaming Market Data with .NET and ReactJS

![Architecture of RealMarketAPI](https://images.viblo.asia/513fabb5-9801-4991-946a-c9dcbb5de844.png) **Last month** I shared how I turned a side project into a SaaS. Today, I’m opening the hood and ...

Đọc thêm
Nghiệp vụ Checkout COD: Không chỉ là một nút bấm - Tư duy xử lý "vạn đơn" cho Backend
09/05/2026

Nghiệp vụ Checkout COD: Không chỉ là một nút bấm - Tư duy xử lý "vạn đơn" cho Backend

### 1. Mở đầu: "Cạm bẫy" của sự đơn giản Trong thanh toán online, chúng ta dựa vào kết quả trả về từ Gateway (Paypal, VNPay...). Với COD, "hợp đồng" thanh toán ...

Đọc thêm

Bắt đầu dự án của bạn

Hãy để Flash Dev đồng hành cùng bạn

Liên hệ ngay