สร้างและแสดงข้อความป๊อปอัป

ลองใช้วิธีเขียน
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนําสําหรับ Android ดูวิธีเพิ่มการแจ้งเตือนใน "เขียน"

คุณสามารถใช้ Snackbar เพื่อแสดงข้อความสั้นๆ แก่ผู้ใช้ ข้อความจะหายไปโดยอัตโนมัติหลังจากผ่านไประยะหนึ่ง ซึ่งต่างจากการแจ้งเตือน Snackbar เหมาะสําหรับข้อความสั้นๆ ที่ผู้ใช้ไม่จําเป็นต้องดําเนินการใดๆ เช่น แอปอีเมลสามารถใช้ Snackbar เพื่อแจ้งให้ผู้ใช้ทราบว่าแอปส่งอีเมลสําเร็จ

ใช้ CoordinatorLayout

Snackbar แนบอยู่กับมุมมอง Snackbar มีฟังก์ชันพื้นฐานหากแนบอยู่กับออบเจ็กต์ที่มาจากคลาส View เช่น ออบเจ็กต์เลย์เอาต์ทั่วไป อย่างไรก็ตาม หากSnackbarเชื่อมโยงกับCoordinatorLayout Snackbarจะได้รับฟีเจอร์เพิ่มเติมดังต่อไปนี้

  • ผู้ใช้สามารถปิด Snackbar ได้โดยปัดออก
  • เลย์เอาต์จะย้ายองค์ประกอบ UI อื่นๆ เมื่อ Snackbar ปรากฏขึ้น เช่น หากเลย์เอาต์มี FloatingActionButton เลย์เอาต์จะย้ายปุ่มขึ้นเมื่อแสดง Snackbar แทนที่จะวาด Snackbar ไว้ด้านบนปุ่ม คุณดูลักษณะของการดำเนินการนี้ได้ในรูปที่ 1

คลาส CoordinatorLayout มีฟังก์ชันการทำงานที่มากกว่า FrameLayout หากแอปใช้ FrameLayout อยู่แล้ว คุณสามารถแทนที่เลย์เอาต์นั้นด้วย CoordinatorLayout เพื่อเปิดใช้ฟังก์ชันการทำงาน Snackbar ได้อย่างเต็มรูปแบบ หากแอปใช้ออบเจ็กต์เลย์เอาต์อื่นๆ ให้รวมองค์ประกอบเลย์เอาต์ที่มีอยู่ไว้ใน CoordinatorLayout ดังที่แสดงในตัวอย่างต่อไปนี้

<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>

ตั้งค่าแท็ก android:id สําหรับ CoordinatorLayout คุณต้องใช้รหัสของเลย์เอาต์เมื่อแสดงข้อความ

รูปที่ 1 CoordinatorLayout จะย้าย FloatingActionButton ขึ้นเมื่อ Snackbar ปรากฏขึ้น

แสดงข้อความ

การแสดงข้อความมี 2 ขั้นตอน ก่อนอื่น ให้สร้างออบเจ็กต์ Snackbar ที่มีข้อความ จากนั้นเรียกใช้show()วิธีของออบเจ็กต์นั้นเพื่อแสดงข้อความต่อผู้ใช้

สร้างออบเจ็กต์ Snackbar

สร้างออบเจ็กต์ Snackbar โดยการเรียกใช้เมธอดแบบคงที่ของ Snackbar.make() เมื่อสร้าง Snackbar ให้ระบุข้อความที่จะแสดงและระยะเวลาในการแสดงข้อความ ดังนี้

Kotlin

val mySnackbar = Snackbar.make(view, stringId, duration)

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
การดู
มุมมองที่จะแนบ Snackbar วิธีการนี้จะค้นหาจากลําดับชั้นของมุมมองจากมุมมองที่ส่งจนกว่าจะถึงCoordinatorLayoutหรือมุมมองเนื้อหาของการตกแต่งหน้าต่าง ปกติแล้ว การส่ง CoordinatorLayout ที่ล้อมรอบเนื้อหาจะง่ายกว่า
stringId
รหัสทรัพยากรของข้อความที่ต้องการแสดง ซึ่งอาจเป็นข้อความที่มีการจัดรูปแบบหรือไม่มีการจัดรูปแบบก็ได้
ระยะเวลา
ระยะเวลาในการแสดงข้อความ ซึ่งอาจเป็น LENGTH_SHORT หรือ LENGTH_LONG

แสดงข้อความต่อผู้ใช้

หลังจากสร้าง Snackbar แล้ว ให้เรียกใช้เมธอด show() ของ Snackbar เพื่อแสดง Snackbar ต่อผู้ใช้

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

ระบบจะไม่แสดงออบเจ็กต์ Snackbar หลายรายการพร้อมกัน ดังนั้นหากในขณะนี้มุมมองแสดง Snackbar รายการอื่นอยู่ ระบบจะจัดคิว Snackbar ของคุณและแสดงหลังจาก Snackbar ปัจจุบันหมดอายุหรือถูกปิด

หากต้องการแสดงข้อความต่อผู้ใช้และไม่จำเป็นต้องเรียกใช้เมธอดยูทิลิตีของออบเจ็กต์ Snackbar คุณก็ไม่จำเป็นต้องเก็บการอ้างอิง Snackbar ไว้หลังจากเรียกใช้ show() ด้วยเหตุนี้ เราจึงมักใช้การต่อเชนเมธอดเพื่อสร้างและแสดง Snackbar ในคำสั่งเดียว ดังนี้

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();