เพิ่มการปัดเพื่อรีเฟรชลงในแอปของคุณ
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ลองใช้วิธีเขียน
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนําสําหรับ Android ดูวิธีปัดเพื่อรีเฟรชในเครื่องมือเขียน
รูปแบบอินเทอร์เฟซผู้ใช้แบบปัดเพื่อรีเฟรชจะติดตั้งใช้งานภายในวิดเจ็ต SwipeRefreshLayout
ทั้งหมด ซึ่งจะตรวจจับการปัดในแนวตั้ง แสดงแถบความคืบหน้าที่โดดเด่น และเรียกใช้เมธอดการเรียกกลับในแอปของคุณ เปิดใช้ลักษณะการทํางานนี้โดยเพิ่มวิดเจ็ตลงในไฟล์เลย์เอาต์ในฐานะรายการหลักของ ListView
หรือ GridView
และใช้ลักษณะการรีเฟรชที่เรียกใช้เมื่อผู้ใช้ปัด
หน้านี้จะแสดงวิธีเพิ่มวิดเจ็ตลงในเลย์เอาต์ที่มีอยู่ นอกจากนี้ ยังแสดงวิธีเพิ่มการดําเนินการรีเฟรชไปยังพื้นที่รายการเพิ่มเติมของแถบการดำเนินการเพื่อให้ผู้ใช้ที่ใช้ท่าทางสัมผัสการปัดไม่ได้สามารถเรียกใช้การอัปเดตด้วยตนเองโดยใช้อุปกรณ์ภายนอก
เพิ่มการพึ่งพา SwipeRefreshLayout
หากต้องการใช้ SwipeRefreshLayout
ในแอป ให้เพิ่ม Dependency ต่อไปนี้ลงในไฟล์ build.gradle
Groovy
dependencies {
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"
}
Kotlin
dependencies {
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01")
}
หากต้องการเพิ่มวิดเจ็ตการปัดเพื่อรีเฟรชลงในแอปที่มีอยู่ ให้เพิ่ม SwipeRefreshLayout
เป็นส่วนหลักของ ListView
หรือ GridView
รายการเดียว
SwipeRefreshLayout
รองรับ ListView
หรือ GridView
ย่อยเพียงรายการเดียวเท่านั้น
ตัวอย่างต่อไปนี้แสดงวิธีเพิ่มวิดเจ็ต SwipeRefreshLayout
ลงในไฟล์เลย์เอาต์ที่มีอยู่ซึ่งมี ListView
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swiperefresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
คุณยังใช้วิดเจ็ต SwipeRefreshLayout
กับ
ListFragment
ได้ด้วย หากเลย์เอาต์มี ListView
ที่มีรหัส "@android:id/list"
ระบบจะรองรับฟังก์ชันการปัดเพื่อรีเฟรชโดยอัตโนมัติ อย่างไรก็ตาม การประกาศ ListView
อย่างชัดเจนด้วยวิธีนี้จะลบล้างโครงสร้างมุมมอง ListFragment
เริ่มต้น หากต้องการใช้โครงสร้างมุมมองเริ่มต้น ให้ลบล้างลักษณะการทํางานของ SwipeRefreshLayout
และ ListFragment
บางส่วน
เพิ่มการดำเนินการรีเฟรชลงในแถบการดำเนินการ
เพิ่มการดําเนินการรีเฟรชลงในแถบการดำเนินการของแอปเพื่อให้ผู้ใช้ที่ไม่สามารถปัดเรียกใช้การอัปเดตด้วยตนเองได้ เช่น ผู้ใช้ที่มีความต้องการด้านการช่วยเหลือพิเศษสามารถเรียกให้แถบการดำเนินการดำเนินการโดยใช้อุปกรณ์ภายนอก เช่น แป้นพิมพ์และปุ่มบังคับทิศทาง
เพิ่มการดําเนินการรีเฟรชเป็นรายการเมนูแทนที่จะเป็นปุ่มโดยการตั้งค่าแอตทริบิวต์
android:showAsAction=never
หากคุณแสดงการดําเนินการเป็นปุ่ม ผู้ใช้อาจคิดว่าการดําเนินการของปุ่มรีเฟรชแตกต่างจากการดําเนินการปัดเพื่อรีเฟรช การทำให้การดำเนินการรีเฟรชดูไม่โดดเด่นในแถบการดำเนินการจะกระตุ้นให้ผู้ใช้อัปเดตด้วยตนเองด้วยท่าทางสัมผัสการปัด ขณะเดียวกันก็ยังคงตัวเลือกที่เข้าถึงได้ไว้สำหรับผู้ใช้ที่มองหาตัวเลือกนี้ด้วยปุ่ม D-pad
โค้ดต่อไปนี้แสดงวิธีเพิ่มการดําเนินการปัดเพื่อรีเฟรชไปยังพื้นที่รายการเพิ่มเติม
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_refresh"
android:showAsAction="never"
android:title="@string/menu_refresh"/>
</menu>
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-26 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-26 UTC"],[],[],null,["# Add swipe-to-refresh to your app\n\nTry the Compose way \nJetpack Compose is the recommended UI toolkit for Android. Learn how to pull to refresh in Compose. \n[Pull to refresh in Compose →](/develop/ui/compose/components/pull-to-refresh) \n\nThe swipe-to-refresh user interface pattern is implemented entirely within the\n[SwipeRefreshLayout](/reference/androidx/swiperefreshlayout/widget/SwipeRefreshLayout)\nwidget, which detects the vertical swipe, displays a distinctive progress bar, and triggers callback\nmethods in your app. Enable this behavior by adding the widget to your layout file as the parent of\na [ListView](/reference/android/widget/ListView) or\n[GridView](/reference/android/widget/GridView) and implementing the\nrefresh behavior that is invoked when the user swipes.\n\nThis page shows how to add the widget to an existing layout. It also shows how to add a refresh\naction to the action bar overflow area so that users who can't use the swipe gesture can trigger a\nmanual update with an external device.\n\nAdd SwipeRefreshLayout dependency\n---------------------------------\n\nTo use `SwipeRefreshLayout` in your app, add the following dependency to your\n`build.gradle` file: \n\n### Groovy\n\n```groovy\ndependencies {\n implementation \"androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01\"\n}\n```\n\n### Kotlin\n\n```kotlin\ndependencies {\n implementation(\"androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01\")\n}\n```\n\nAdd the SwipeRefreshLayout Widget\n---------------------------------\n\nTo add the swipe-to-refresh widget to an existing app, add `SwipeRefreshLayout` as the\nparent of a single `ListView` or `GridView`.\n`SwipeRefreshLayout` only supports a single `ListView` or\n`GridView` child.\n\nThe following example demonstrates how to add the `SwipeRefreshLayout` widget to an\nexisting layout file containing a `ListView`: \n\n```xml\n\u003candroidx.swiperefreshlayout.widget.SwipeRefreshLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:id=\"@+id/swiperefresh\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"match_parent\"\u003e\n\n \u003cListView\n android:id=\"@android:id/list\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"match_parent\" /\u003e\n\n\u003c/androidx.swiperefreshlayout.widget.SwipeRefreshLayout\u003e\n```\n\nYou can also use the `SwipeRefreshLayout` widget with a\n[ListFragment](/reference/androidx/fragment/app/ListFragment). If the\nlayout contains a `ListView` with the ID `\"@android:id/list\"`, the\nswipe-to-refresh functionality is automatically supported. However, explicitly declaring the\n`ListView` this way supersedes the default `ListFragment` view structure. If\nyou want to use the default view structure, override parts of the `SwipeRefreshLayout`\nand `ListFragment` behavior.\n\nAdd a refresh action to the action bar\n--------------------------------------\n\nAdd a refresh action to your app's action bar so users who can't perform swipe gestures can\ntrigger a manual update. For example, users with accessibility needs can trigger action bar actions\nusing external devices, such as keyboards and D-pads.\n\nAdd the refresh action as a menu item, rather than as a button, by setting the attribute\n`android:showAsAction=never`. If you display the action as a button, users might assume\nthe refresh button action is different from the swipe-to-refresh action. Making the refresh action\nless conspicuous in the action bar encourages users to perform manual updates with swipe gestures\nwhile maintaining the accessible option where D-pad users look for it.\n\nThe following code demonstrates how to add the swipe-to-refresh action to the overflow area: \n\n```xml\n\u003cmenu xmlns:android=\"http://schemas.android.com/apk/res/android\" \u003e\n \u003citem\n android:id=\"@+id/menu_refresh\"\n android:showAsAction=\"never\"\n android:title=\"@string/menu_refresh\"/\u003e\n\u003c/menu\u003e\n```"]]