با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
جزء اسنکبار به عنوان یک اعلان کوتاه عمل می کند که در پایین صفحه ظاهر می شود. این بازخورد در مورد یک عملیات یا اقدام بدون وقفه در تجربه کاربر ارائه می دهد. اسنک بارها پس از چند ثانیه ناپدید می شوند. کاربر همچنین می تواند با یک عمل، مانند ضربه زدن روی یک دکمه، آنها را رد کند.
این سه مورد استفاده را در نظر بگیرید که ممکن است از اسنک بار استفاده کنید:
تأیید اقدام: پس از حذف یک ایمیل یا پیام توسط کاربر، یک نوار اسنک برای تأیید عملکرد ظاهر می شود و گزینه «واگرد» را ارائه می دهد.
وضعیت شبکه: هنگامی که برنامه اتصال اینترنت خود را قطع می کند، یک نوار اسنک ظاهر می شود تا متوجه شود که اکنون آفلاین است.
ارسال داده ها: پس از ارسال موفقیت آمیز فرم یا به روز رسانی تنظیمات، یک اسنکبار متوجه می شود که تغییر با موفقیت ذخیره شده است.
شکل 1. نمونه های اسنکبار.
مثال اساسی
برای پیاده سازی نوار اسنک، ابتدا SnackbarHost ایجاد می کنید که شامل یک ویژگی SnackbarHostState است. SnackbarHostState دسترسی به تابع showSnackbar() را فراهم می کند که می توانید از آن برای نمایش نوار اسنک خود استفاده کنید.
این تابع تعلیق به CoroutineScope مانند استفاده از rememberCoroutineScope نیاز دارد - و می تواند در پاسخ به رویدادهای UI برای نشان دادن Snackbar در Scaffold فراخوانی شود.
می توانید یک اقدام اختیاری ارائه دهید و مدت زمان Snackbar را تنظیم کنید. تابع snackbarHostState.showSnackbar() پارامترهای actionLabel و duration اضافی را می پذیرد و یک SnackbarResult برمی گرداند.
valscope=rememberCoroutineScope()valsnackbarHostState=remember{SnackbarHostState()}Scaffold(snackbarHost={SnackbarHost(hostState=snackbarHostState)},floatingActionButton={ExtendedFloatingActionButton(text={Text("Show snackbar")},icon={Icon(Icons.Filled.Image,contentDescription="")},onClick={scope.launch{valresult=snackbarHostState.showSnackbar(message="Snackbar",actionLabel="Action",// Defaults to SnackbarDuration.Shortduration=SnackbarDuration.Indefinite)when(result){SnackbarResult.ActionPerformed->{/* Handle snackbar action performed */}SnackbarResult.Dismissed->{/* Handle snackbar dismissed */}}}})}){contentPadding->
// Screen content}
می توانید یک Snackbar سفارشی با پارامتر snackbarHost تهیه کنید. برای اطلاعات بیشتر به اسناد مرجع SnackbarHost API مراجعه کنید.
نکات کلیدی
actionLabel = "Action" : متن دکمه عمل را تنظیم می کند.
withDismissAction = true : یک ضربدر در نوار اسنک ارائه می دهد. روی آن ضربه بزنید تا نوار اسنک رد شود.
duration = SnackbarDuration.Indefinite : نوار اسنک را تا زمانی که کاربر یا برنامه آن را رد کند، نمایش داده می شود.
SnackbarResult.ActionPerformed : نشان دهنده این است که کاربر روی دکمه عمل نوار اسنک کلیک کرده است.
SnackbarResult.Dismissed : نشان دهنده این است که کاربر بدون کلیک کردن روی دکمه اقدام، نوار اسنک را حذف کرده است.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-08-27 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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-08-27 بهوقت ساعت هماهنگ جهانی."],[],[],null,["The [snackbar component](https://m3.material.io/components/snackbar/overview) serves as a brief notification that appears at the\nbottom of the screen. It provides feedback about an operation or action without\ninterrupting the user experience. Snackbars disappear after a few seconds. The\nuser can also dismiss them with an action, such as tapping a button.\n\nConsider these three use cases where you might use a snackbar:\n\n- **Action Confirmation:** After a user deletes an email or message, a snackbar appears to confirm the action and offer an \"Undo\" option.\n- **Network Status:** When the app loses its internet connection, a snackbar pops up to note that it is now offline.\n- **Data Submission:** Upon successfully submitting a form or updating settings, a snackbar notes that the change has saved successfully.\n\n**Figure 1.** Snackbar examples.\n\nBasic example\n\nTo implement a snackbar, you first create [`SnackbarHost`](/reference/kotlin/androidx/compose/material3/package-summary#SnackbarHost(androidx.compose.material3.SnackbarHostState,androidx.compose.ui.Modifier,kotlin.Function1)), which includes a\n[`SnackbarHostState`](/reference/kotlin/androidx/compose/material3/SnackbarHostState) property. `SnackbarHostState` provides access to the\n[`showSnackbar()`](/reference/kotlin/androidx/compose/material3/SnackbarHostState#showsnackbar) function which you can use to display your snackbar.\n\nThis suspending function requires a `CoroutineScope` such as with using\n[`rememberCoroutineScope`](/reference/kotlin/androidx/compose/runtime/package-summary#remembercoroutinescope) --- and can be called in response to UI events to\nshow a [`Snackbar`](/reference/kotlin/androidx/compose/material3/package-summary#snackbar) within `Scaffold`.\n\n\n```kotlin\nval scope = rememberCoroutineScope()\nval snackbarHostState = remember { SnackbarHostState() }\nScaffold(\n snackbarHost = {\n SnackbarHost(hostState = snackbarHostState)\n },\n floatingActionButton = {\n ExtendedFloatingActionButton(\n text = { Text(\"Show snackbar\") },\n icon = { Icon(Icons.Filled.Image, contentDescription = \"\") },\n onClick = {\n scope.launch {\n snackbarHostState.showSnackbar(\"Snackbar\")\n }\n }\n )\n }\n) { contentPadding -\u003e\n // Screen content\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt#L218-L240\n```\n\n\u003cbr /\u003e\n\nSnackbar with action\n\nYou can provide an optional action and adjust the duration of the `Snackbar`.\nThe `snackbarHostState.showSnackbar()` function accepts additional `actionLabel`\nand `duration` parameters, and returns a [`SnackbarResult`](/reference/kotlin/androidx/compose/material3/SnackbarResult).\n\n\n```kotlin\nval scope = rememberCoroutineScope()\nval snackbarHostState = remember { SnackbarHostState() }\nScaffold(\n snackbarHost = {\n SnackbarHost(hostState = snackbarHostState)\n },\n floatingActionButton = {\n ExtendedFloatingActionButton(\n text = { Text(\"Show snackbar\") },\n icon = { Icon(Icons.Filled.Image, contentDescription = \"\") },\n onClick = {\n scope.launch {\n val result = snackbarHostState\n .showSnackbar(\n message = \"Snackbar\",\n actionLabel = \"Action\",\n // Defaults to SnackbarDuration.Short\n duration = SnackbarDuration.Indefinite\n )\n when (result) {\n SnackbarResult.ActionPerformed -\u003e {\n /* Handle snackbar action performed */\n }\n SnackbarResult.Dismissed -\u003e {\n /* Handle snackbar dismissed */\n }\n }\n }\n }\n )\n }\n) { contentPadding -\u003e\n // Screen content\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt#L247-L283\n```\n\n\u003cbr /\u003e\n\nYou can provide a custom `Snackbar` with the `snackbarHost` parameter. See the\n[`SnackbarHost` API reference docs](/reference/kotlin/androidx/compose/material/package-summary#snackbarhost) for more information.\n\nKey points\n\n- `actionLabel = \"Action\"`: Sets the action button text.\n- `withDismissAction = true`: Provides a cross in the snackbar. Tap it to dismiss the snackbar.\n- `duration = SnackbarDuration.Indefinite`: Keeps the snackbar displayed until the user or program dismisses it.\n- `SnackbarResult.ActionPerformed`: Signifies that the user clicked the snackbar's action button.\n- `SnackbarResult.Dismissed`: Signifies that the user dismissed the snackbar without clicking the action button."]]