Bạn có thể dùng Snackbar để hiển thị một thông báo ngắn gọn cho người dùng. Không giống như Thông báo, thông báo này sẽ tự động biến mất sau một khoảng thời gian ngắn. Snackbar là lựa chọn lý tưởng cho những thông báo ngắn mà người dùng không cần phải hành động. Ví dụ: một ứng dụng email có thể dùng Snackbar để cho người dùng biết rằng ứng dụng đã gửi email thành công.
Sử dụng CoordinatorLayout
Snackbar được đính kèm vào một khung hiển thị. Snackbar cung cấp chức năng cơ bản nếu được đính kèm vào bất kỳ đối tượng nào bắt nguồn từ lớp View, chẳng hạn như bất kỳ đối tượng bố cục chung nào. Tuy nhiên, nếu Snackbar được đính kèm vào CoordinatorLayout, thì Snackbar sẽ có thêm các tính năng:
- Người dùng có thể loại bỏ
Snackbarbằng cách vuốt. - Bố cục này sẽ di chuyển các phần tử khác trên giao diện người dùng khi
Snackbarxuất hiện. Ví dụ: nếu bố cục cóFloatingActionButton, bố cục sẽ di chuyển nút lên trên khi hiển thịSnackbar, thay vì vẽSnackbarlên trên nút. Bạn có thể xem giao diện của tính năng này trong Hình 1.
Lớp CoordinatorLayout cung cấp một tập hợp con của chức năng FrameLayout.
Nếu ứng dụng của bạn đã sử dụng FrameLayout, bạn có thể thay thế bố cục đó bằng CoordinatorLayout để bật đầy đủ chức năng Snackbar. Nếu ứng dụng của bạn sử dụng các đối tượng bố cục khác, hãy gói các phần tử bố cục hiện có trong một CoordinatorLayout, như minh hoạ trong ví dụ sau:
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/myCoordinatorLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Here are the existing layout elements, now wrapped in a CoordinatorLayout. --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- ...Toolbar, other layouts, other elements... --> </LinearLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>
Đặt thẻ android:id cho CoordinatorLayout.
Bạn cần có mã nhận dạng của bố cục khi hiển thị thông báo.
Hình 1. CoordinatorLayout sẽ di chuyển FloatingActionButton lên trên khi Snackbar xuất hiện.
Hiển thị thông báo
Có 2 bước để hiển thị một thông báo. Trước tiên, bạn sẽ tạo một đối tượng Snackbar bằng văn bản thông báo. Sau đó, bạn gọi phương thức show() của đối tượng đó để hiển thị thông báo cho người dùng.
Tạo đối tượng Snackbar
Tạo một đối tượng Snackbar bằng cách gọi phương thức tĩnh Snackbar.make(). Khi bạn tạo Snackbar, hãy chỉ định thông báo mà
hiển thị và khoảng thời gian hiển thị thông báo:
val mySnackbar = Snackbar.make(view, stringId, duration)
- xem
-
Khung hiển thị để đính kèm
Snackbarvào. Phương thức này tìm kiếm trong hệ phân cấp view từ khung hiển thị đã truyền cho đến khi đạt đếnCoordinatorLayouthoặc khung hiển thị nội dung của cửa sổ. Thông thường, bạn chỉ cần truyềnCoordinatorLayoutbao quanh nội dung của mình. - stringId
- Mã tài nguyên của thông báo mà bạn muốn hiển thị. Đây có thể là văn bản có định dạng hoặc văn bản không có định dạng.
- thời lượng
-
Khoảng thời gian hiển thị thông báo. Đây có thể là
LENGTH_SHORThoặcLENGTH_LONG.
Hiện thông báo cho người dùng
Sau khi bạn tạo Snackbar, hãy gọi phương thức show()
của để hiển thị Snackbar cho người dùng:
mySnackbar.show()
Hệ thống không hiển thị nhiều đối tượng Snackbar cùng một lúc, vì vậy, nếu khung hiển thị hiện đang hiển thị một Snackbar khác, thì hệ thống sẽ xếp hàng Snackbar của bạn và hiển thị đối tượng đó sau khi Snackbar hiện tại hết hạn hoặc bị loại bỏ.
Nếu muốn cho người dùng thấy một thông báo và không cần gọi bất kỳ phương thức tiện ích nào của đối tượng Snackbar, thì bạn không cần giữ tham chiếu đến Snackbar sau khi gọi show(). Vì lý do này, bạn thường dùng phương thức liên kết để tạo và hiện Snackbar trong một câu lệnh:
Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT ).show()