Bạn có thể sử 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 sẽ tự động biến mất sau một khoảng thời gian ngắn. Snackbar
là thông báo 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ụ: ứng dụng email có thể sử 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 thành phần 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 phổ biến 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ể đóng
Snackbar
bằng cách vuốt nó đi. - Bố cục này di chuyển các phần tử giao diện người dùng khác khi
Snackbar
xuất hiện. Ví dụ: nếu bố cục cóFloatingActionButton
, thì bố cục sẽ di chuyển nút lên khi hiển thịSnackbar
, thay vì vẽSnackbar
lên trên nút. Bạn có thể xem hình ảnh về cách thực hiện 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 toàn bộ 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 CoordinatorLayout
, như minh hoạ trong ví dụ sau:
<android.support.design.widget.CoordinatorLayout android:id="@+id/myCoordinatorLayout" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" 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> </android.support.design.widget.CoordinatorLayout>
Đặt thẻ android:id
cho CoordinatorLayout
.
Bạn cần mã nhận dạng của bố cục khi hiển thị thông báo.
Hình 1. CoordinatorLayout
di chuyển FloatingActionButton
lên khi Snackbar
xuất hiện.
Hiển thị thông báo
Có hai bước để hiển thị thông báo. Trước tiên, bạn tạo một đối tượng Snackbar
có 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 Thanh thông báo nhanh
Tạo đối tượng Snackbar
bằng cách gọi phương thức Snackbar.make()
tĩnh. Khi bạn tạo Snackbar
, hãy chỉ định thông báo mà Snackbar
hiển thị và thời lượng hiển thị thông báo:
Kotlin
val mySnackbar = Snackbar.make(view, stringId, duration)
Java
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- lượt xem
-
Khung hiển thị để đính kèm
Snackbar
. Phương thức này tìm kiếm hệ phân cấp khung hiển thị từ khung hiển thị đã truyền cho đến khi đạt đếnCoordinatorLayout
hoặc khung hiển thị nội dung của trang trí cửa sổ. Thông thường, bạn nên truyềnCoordinatorLayout
bao gồm nội dung của mình. - stringId
- Mã tài nguyên của thông báo 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.
- duration
-
Khoảng thời gian hiển thị thông báo. Đó có thể là
LENGTH_SHORT
hoặcLENGTH_LONG
.
Hiển thị 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()
để hiển thị Snackbar
cho người dùng:
Kotlin
mySnackbar.show()
Java
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 thành phần hiển thị hiện đang hiển thị một Snackbar
khác, thì hệ thống sẽ đưa Snackbar
của bạn vào hàng đợi và hiển thị sau khi Snackbar
hiện tại hết hạn hoặc bị loại bỏ.
Nếu muốn hiển thị thông báo cho người dùng 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
, bạn không cần giữ lại tham chiếu đến Snackbar
sau khi gọi show()
. Vì lý do này, bạn thường sử dụng tính năng tạo chuỗi phương thức để tạo và hiển thị Snackbar
trong một câu lệnh:
Kotlin
Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT ).show()
Java
Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT) .show();