Tạo và hiển thị thông báo bật lên

Thử cách sử dụng Compose
Jetpack Compose là bộ công cụ giao diện người dùng được đề xuất cho Android. Tìm hiểu cách thêm thông báo trong Compose.

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 phù hợp với các thông báo ngắn gọn mà người dùng không cần làm gì. Ví dụ: một ứng dụng email có thể sử dụng Snackbar để cho người dùng biết ứ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ới 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ới một CoordinatorLayout, thì Snackbar sẽ có thêm các tính năng khác:

  • Người dùng có thể loại bỏ Snackbar bằng cách vuốt nó ra xa.
  • Bố cục này di chuyển các thành phần khác trên giao diện người dùng 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 ở đầu nút. Bạn có thể thấy giao diện này trong hình 1.

Lớp CoordinatorLayout cung cấp một tập mẹ của chức năng của FrameLayout. Nếu ứng dụng của bạn đã sử dụng FrameLayout, thì 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 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ư 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 có 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ô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ó nội dung thông báo. Sau đó, bạn sẽ 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à thông báo này sẽ hiển thị và khoảng thời gian hiện 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ị cần đí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 đến CoordinatorLayout hoặc khung hiển thị nội dung của trang trí cửa sổ. Thông thường, việc truyền CoordinatorLayout kèm theo nội dung của bạn sẽ dễ dàng hơn.
mã chuỗi
Mã tài nguyên của thông báo bạn muốn hiển thị. Văn bản này có thể định dạng hoặc chưa định dạng.
duration
Khoảng thời gian hiển thị thông báo. Giá trị này có thể là LENGTH_SHORT hoặc LENGTH_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() để 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 khung hiển thị đang hiển thị một Snackbar khác, thì hệ thống sẽ xếp Snackbar của bạn vào hàng đợi và hiển thị nó sau khi Snackbar hiện tại hết hạn hoặc bị loại bỏ.

Nếu bạn muốn hiển thị thông báo cho người dùng mà 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 nên sử dụng 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();