وعادةً ما تتضمّن عناصر التنقّل الأساسية. قد تمنح إمكانية الوصول إلى إجراءات أخرى، على سبيل المثال، باستخدام زر إجراء رئيسي.
توافق الإصدار
يتطلّب هذا التنفيذ ضبط الحد الأدنى من إصدار حزمة SDK لمشروعك على المستوى 21 من واجهة برمجة التطبيقات أو
إصدار أحدث.
التبعيات
تنفيذ شريط تطبيق في أعلى الشاشة
يعرض الرمز التالي عمليات التنفيذ للأنواع الأربعة من أشرطة التطبيقات العلوية،
بما في ذلك أمثلة متنوعة على كيفية التحكّم في سلوك الانتقال للأعلى أو للأسفل.
لإنشاء شريط تطبيق صغير في أعلى الشاشة، استخدِم العنصر القابل للتجميع TopAppBar. هذا هو
أبسط شريط تطبيق علوي ممكن، وفي هذا المثال يحتوي على عنوان فقط.
لا يُرسِل المثال التالي إلى TopAppBar قيمة
scrollBehavior، لذا لا يستجيب شريط التطبيق العلوي للانتقال إلى
المحتوى الداخلي.
النتيجة
الشكل 1. شريط تطبيق صغير في أعلى الشاشة
شريط التطبيق العلوي الذي تمت محاذاته في الوسط
شريط التطبيقات العلوي الذي تم ضبطه في المنتصف هو نفسه شريط التطبيقات الصغير،
باستثناء أنّ العنوان يكون في المنتصف داخل المكوّن. لتنفيذ ذلك، استخدِم العنصر القابل للتجميع المخصّص CenterAlignedTopAppBar.
يستخدم هذا المثال enterAlwaysScrollBehavior() للحصول على القيمة التي يتم تمريرها
لـ scrollBehavior. يتم تصغير الشريط عندما ينتقل المستخدم إلى
المحتوى الداخلي للإطار.
النتيجة
الشكل 2. شريط التطبيقات العلوي الذي تم توسيطه
شريط التطبيق العلوي المتوسط
يضع شريط التطبيق العلوي المتوسط الحجم العنوان أسفل أي رموز إضافية. لإنشاء
واحد، استخدِم العنصر القابل للتجميع MediumTopAppBar.
مثل الرمز البرمجي السابق، يستخدم هذا المثال enterAlwaysScrollBehavior() لمحاولة
الحصول على القيمة التي يتم تمريرها إلى scrollBehavior.
النتيجة
الشكل 3. شريط تطبيق متوسط في أعلى الشاشة يعرض سلوك الانتقال من enterAlwaysScrollBehavior
شريط التطبيق العلوي الكبير
يشبه شريط التطبيقات العلوي الكبير الشريط المتوسط، إلا أنّ المسافة الفارغة بين
العنوان والرموز أكبر، كما أنّه يشغل مساحة أكبر على الشاشة بشكل عام. ل
إنشاء نموذج، استخدِم العنصر القابل للتجميع LargeTopAppBar ).
يستخدِم هذا المثال
exitUntilCollapsedScrollBehavior() للحصول على القيمة التي يتم تمريرها
scrollBehavior. ينكمش الشريط عندما ينتقل المستخدم إلى
المحتوى الداخلي للإطار، ولكن يتم توسيعه عندما ينتقل المستخدم إلى نهاية
المحتوى الداخلي.
النتيجة
الشكل 4. مثال على تنفيذ شريط تطبيق كبير في أعلى الشاشة
تنفيذ شريط تطبيق سفلي
لإنشاء شريط تطبيق سفلي، استخدِم العنصر القابل للتجميع BottomAppBar، وهو مشابه لعنصر شريط التطبيق العلوي القابل للتجميع.
يمكنك تمرير العناصر القابلة للتجميع للسمَتَين التاليتَين:
actions: سلسلة من الرموز التي تظهر على يمين الشريط وعادةً ما تكون هذه
الإجراءات إما إجراءات رئيسية للشاشة المحدّدة أو عناصر تنقّل.
floatingActionButton: زر الإجراء الرئيسي العائم الذي يظهر على
الجانب الأيمن من الشريط
النتيجة
الشكل 5. مثال على تنفيذ شريط تطبيق سفلي
النقاط الرئيسية
بشكل عام، يتم تمرير أشرطة التطبيقات إلى العنصر القابل للتجميع Scaffold الذي يحتوي على معلمات محدّدة لتلقّيها.
تشترك العناصر القابلة للتجميع التي تستخدمها لتنفيذ شريط التطبيقات العلوي في المَعلمات الرئيسية التالية:
title: النص الذي يظهر في شريط التطبيق
navigationIcon: الرمز الأساسي للتنقّل، والذي يظهر على
يسار شريط التطبيق
actions: الرموز التي تمنح المستخدم إمكانية الوصول إلى الإجراءات الرئيسية، والتي
تظهر على يسار شريط التطبيق
scrollBehavior: لتحديد كيفية استجابة شريط التطبيق العلوي لتحريك
المحتوى الداخلي للإطار.
colors: لتحديد كيفية ظهور شريط التطبيق
يمكنك التحكّم في كيفية استجابة شريط التطبيق عندما ينتقل المستخدم إلى
المحتوى الداخلي للإطار. لإجراء ذلك، أنشئ مثيلًا من
TopAppBarScrollBehavior وأرسِله إلى شريط التطبيق العلوي للمَعلمة
scrollBehavior. هناك ثلاثة أنواع من TopAppBarScrollBehavior:
enterAlwaysScrollBehavior: عندما يسحب المستخدم المحتوى الداخلي لإطار العمل، يتم تصغير شريط التطبيق العلوي. يتم توسيع شريط التطبيق عندما يجذب المستخدم المحتوى الداخلي للأسفل.
exitUntilCollapsedScrollBehavior: يشبه
enterAlwaysScrollBehavior،
مع أنّ شريط التطبيق يتوسّع أيضًا عندما يصل المستخدم إلى نهاية
المحتوى الداخلي للإطار.
pinnedScrollBehavior: يبقى شريط التطبيقات في مكانه ولا يستجيب
للتنقل.
المجموعات التي تتضمّن هذا الدليل
هذا الدليل هو جزء من مجموعات الأدلة السريعة المنظَّمة التي تتناول
أهداف تطوير Android الأوسع نطاقًا:
عرض المكونات التفاعلية
تعرَّف على كيفية استخدام الدوال القابلة للتجميع لإنشاء مكونات جميلة لواجهة المستخدم بسهولة استنادًا إلى نظام التصميم المتعدّد الأبعاد.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-02-06 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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-02-06 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["\u003cbr /\u003e\n\nApp bars are containers at the top or the bottom of the screen that give your\nusers access to key features and navigation items:\n\n| Type | Appearance | Purpose |\n|---------------------------|----------------------------------|-------------------------------------------------------------------------------------------------------------------------------|\n| [Top app bar](#top) | Across the top of the screen. | Provides access to key tasks and information. Typically hosts a title, core action items, and certain navigation items. |\n| [Bottom app bar](#bottom) | Across the bottom of the screen. | Typically includes core navigation items. Might give access to other actions, for example, by using a floating action button. |\n\nVersion compatibility\n\nThis implementation requires that your project minSDK be set to API level 21 or\nhigher.\n\nDependencies\n\nImplement a top app bar\n\nThe following code shows implementations for the four types of top app bars,\nincluding varying examples of how you can control scroll behavior.\n\n- [Small top app bar](#small)\n- [Center-aligned top app bar](#center)\n- [Medium top app bar](#medium)\n- [Large top app bar](#large)\n\nSmall top app bar\n\nTo create a small top app bar, use the [`TopAppBar`](/reference/kotlin/androidx/compose/material3/package-summary#TopAppBar(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function1,androidx.compose.foundation.layout.WindowInsets,androidx.compose.material3.TopAppBarColors,androidx.compose.material3.TopAppBarScrollBehavior)) composable. This is the\nsimplest possible top app bar and in this example just contains a title.\n\nThe following example does not pass `TopAppBar` a value for\n`scrollBehavior`, so the top app bar does not react to scrolling of the inner\ncontent.\n\nResult **Figure 1.** A small top app bar.\n\nCenter-aligned top app bar\n\nThe center-aligned top app bar is the same as the small app bar,\nexcept the title is centered within the component. To implement it, use the\ndedicated [`CenterAlignedTopAppBar`](/reference/kotlin/androidx/compose/material/package-summary#Scaffold(androidx.compose.foundation.layout.WindowInsets,androidx.compose.ui.Modifier,androidx.compose.material.ScaffoldState,kotlin.Function0,kotlin.Function0,kotlin.Function1,kotlin.Function0,androidx.compose.material.FabPosition,kotlin.Boolean,kotlin.Function1,kotlin.Boolean,androidx.compose.ui.graphics.Shape,androidx.compose.ui.unit.Dp,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,kotlin.Function1)) composable.\n\nThis example uses `enterAlwaysScrollBehavior()` to get the value that it passes\nfor `scrollBehavior`. The bar collapses when the user scrolls the\nscaffold's inner content.\n\nResult **Figure 2.** A center-aligned top app bar.\n\nMedium top app bar\n\nThe medium top app bar places the title beneath any additional icons. To create\none, use the [`MediumTopAppBar`](/reference/kotlin/androidx/compose/material3/package-summary#MediumTopAppBar(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function1,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.foundation.layout.WindowInsets,androidx.compose.material3.TopAppBarColors,androidx.compose.material3.TopAppBarScrollBehavior)) composable.\n\nLike the previous code, this example uses `enterAlwaysScrollBehavior()` to\nget the value that it passes for `scrollBehavior`.\n\nResult\n\n\u003cbr /\u003e\n\n**Figure 3.** A medium top app bar demonstrating the scroll behavior from `enterAlwaysScrollBehavior`.\n\n\u003cbr /\u003e\n\nLarge top app bar\n\nA large top app bar is similar to the medium, though the padding between the\ntitle and the icons is greater and it occupies more space on screen overall. To\ncreate one, use the [`LargeTopAppBar`](/reference/kotlin/androidx/compose/material3/package-summary#LargeTopAppBar(kotlin.Function0,androidx.compose.ui.Modifier,kotlin.Function0,kotlin.Function1,androidx.compose.ui.unit.Dp,androidx.compose.ui.unit.Dp,androidx.compose.foundation.layout.WindowInsets,androidx.compose.material3.TopAppBarColors,androidx.compose.material3.TopAppBarScrollBehavior) ) composable.\n\nThis example uses\n`exitUntilCollapsedScrollBehavior()` to get the value that it passes for\n`scrollBehavior`. The bar collapses when the user scrolls the\nscaffold's inner content, but then expands when the user scrolls to the end of\nthe inner content.\n\nResult **Figure 4.** An example implementation of a large top app bar.\n\nImplement a bottom app bar\n\nTo create a bottom app bar, use the [`BottomAppBar`](/reference/kotlin/androidx/compose/material3/package-summary#BottomAppBar(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.ui.graphics.Color,androidx.compose.ui.unit.Dp,androidx.compose.foundation.layout.PaddingValues,androidx.compose.foundation.layout.WindowInsets,kotlin.Function1)) composable, which is\nsimilar to the top app bar composable.\n\nYou pass composables for the following key\nparameters:\n\n- `actions`: A series of icons that appear on the left side of the bar. These are commonly either key actions for the given screen, or navigation items.\n- `floatingActionButton`: The floating action button that appears on the right side of the bar.\n\n| **Note:** You can also use `BottomAppBar` without passing a value for `actions` and `floatingActionButton`. You create a custom bottom app bar by filling `BottomAppBar` with content as you would other containers.\n\nResult **Figure 5.** An example implementation of a bottom app bar.\n\nKey points\n\n- You generally pass app bars to the `Scaffold` composable, which has specific parameters to receive them.\n- The composables that you use to implement top app\n bars share key parameters:\n\n - `title`: The text that appears across the app bar.\n - `navigationIcon`: The primary icon for navigation, which appears on the left of the app bar.\n - `actions`: Icons that provide the user access to key actions, which appear on the right of the app bar.\n - `scrollBehavior`: Determines how the top app bar responds to scrolling of the scaffold's inner content.\n - `colors`: Determines how the app bar appears.\n- You can control how the app bar responds when the user scrolls the\n scaffold's inner content. To do so, create an instance of\n [`TopAppBarScrollBehavior`](/reference/kotlin/androidx/compose/material3/TopAppBarScrollBehavior) and pass it to your top app bar for the\n `scrollBehavior` parameter. There are three types of `TopAppBarScrollBehavior`:\n\n - `enterAlwaysScrollBehavior`: When the user pulls up the scaffold's inner content, the top app bar collapses. The app bar expands when the user pulls down the inner content.\n - `exitUntilCollapsedScrollBehavior`: Similar to `enterAlwaysScrollBehavior`, though the app bar also expands when the user reaches the end of the scaffold's inner content.\n - `pinnedScrollBehavior`: The app bar remains in place and does not react to scrolling.\n\nCollections that contain this guide\n\nThis guide is part of these curated Quick Guide collections that cover\nbroader Android development goals: \n\nDisplay interactive components \nLearn how composable functions can enable you to easily create beautiful UI components based on the Material Design design system. \n[Quick guide collection](/develop/ui/compose/quick-guides/collections/display-interactive-components) \n\nHave questions or feedback \nGo to our frequently asked questions page and learn about quick guides or reach out and let us know your thoughts. \n[Go to FAQ](/quick-guides/faq) [Leave feedback](https://issuetracker.google.com/issues/new?component=1573691&template=1993320)"]]