إضافة تمرير سريع لإعادة التحميل إلى تطبيقك
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
تجربة ميزة "الكتابة"
Jetpack Compose هي مجموعة أدوات واجهة المستخدم المُقترَحة لنظام التشغيل Android. تعرَّف على كيفية سحب الشاشة للأعلى لتحديثها في ميزة "الإنشاء".
يتم تنفيذ نمط واجهة المستخدم للتمرير السريع لإعادة التحميل بالكامل ضمن ملف مكونات SwipeRefreshLayout
التفاعلية التي ترصد التمرير السريع العمودي وتعرض شريط تقدم مميزًا وتنشئ مثيلًا لطريقة callback
في تطبيقك. يمكنك تفعيل هذا السلوك عن طريق إضافة ملف المكونات إلى ملف التنسيق كعنصر رئيسي لملف ListView
أو
GridView
وتنفيذ سلوك التمرير السريع لإعادة التحميل الذي يتم تفعيله عندما يمرّر المستخدم سريعًا على الشاشة.
توضِّح هذه الصفحة كيفية إضافة التطبيق المصغّر إلى تنسيق حالي. ويوضّح أيضًا كيفية إضافة إجراء إعادة تحميل
إلى منطقة القائمة الكاملة في شريط الإجراءات حتى يتمكّن المستخدمون الذين لا يمكنهم استخدام إيماءة التمرير السريع من إجراء
تحديث يدوي باستخدام جهاز خارجي.
إضافة التبعية SwipeRefreshLayout
لاستخدام SwipeRefreshLayout
في تطبيقك، أضِف الملحق التالي إلى ملف
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
. إذا عرضت الإجراء كزر، قد يفترض المستخدمون أنّه
يختلف إجراء زرّ إعادة التحميل عن إجراء التمرير السريع لإعادة التحميل. إنّ جعل إجراء إعادة التحميل
أقل بروزًا في شريط الإجراءات يشجع المستخدمين على إجراء تعديلات يدوية باستخدام إيماءات التمرير
مع الحفاظ على الخيار السهل الاستخدام الذي يبحث عنه مستخدمو لوحة التوجيه.
يوضّح الرمز البرمجي التالي كيفية إضافة إجراء التمرير السريع لإعادة التحميل إلى منطقة العرض الفائض:
<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 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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```"]]