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

Thử cách 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 thành sẽ hiển thị một thông báo ngắn gọn cho người dùng. Bỏ thích 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à lý tưởng cho các thông báo ngắn gọn mà người dùng không cần phải làm gì. Ví dụ: một ứng dụng email có thể sử dụng Snackbar để cho người dùng biết rằng ứng dụng đã gửi thành công email.

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 nó được gắn 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 là được đính kèm vào một CoordinatorLayout, Snackbar có thêm các tính năng bổ sung:

  • Người dùng có thể đóng Snackbar bằng cách vuốt nó sang bên.
  • Bố cục này sẽ 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, bố cục sẽ di chuyển nút lên khi nó hiển thị Snackbar để vẽ Snackbar lên trên nút. Bạn có thể xem cách như trong hình 1.

Lớp CoordinatorLayout cung cấp 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, bạn có thể thay thế bố cục đó với CoordinatorLayout để bật Snackbar đầy đủ của Google. 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 bố cục hiện có trong CoordinatorLayout, như minh hoạ trong đoạn mã sau ví dụ:

<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 bố cục khi hiện 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ông báo. Trước tiên, bạn tạo một Đối tượng Snackbar có nội dung tin nhắn. Sau đó, bạn gọi đối tượng đó là show() để 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 tĩnh Snackbar.make() . Khi bạn tạo Snackbar, hãy chỉ định thông điệp mà bạn muốn truyền tải 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ị để đính kèm Snackbar vào. Phương thức này sẽ tìm kiếm hệ thống 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 sẽ đơn giản hơn bao gồm nội dung của bạn.
mã chuỗi
Mã nhận dạng tài nguyên của thông báo mà bạn muốn hiện. Tệp này có thể được định dạng hoặc văn bản chưa được định dạng.
duration
Lượng thời gian hiện thông báo. Thông tin 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 show() của nó để 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 thời gian, vì vậy, nếu khung hiển thị hiện đang hiển thị một Snackbar khác, thì giá trị hệ thống xếp Snackbar của bạn vào hàng đợi và hiển thị nó sau dòng thời gian Snackbar hết hạn hoặc bị đóng.

Nếu bạn muốn hiển thị thông báo cho người dùng và không cần thực hiện lệnh gọi nào các phương thức tiện ích của đối tượng Snackbar, bạn không cần giữ lại tham chiếu đến Snackbar sau khi bạn gọi show(). Cho lý do này, nên 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();