أشرطة التطبيقات هي حاويات توفر للمستخدم إمكانية الوصول إلى الميزات الرئيسية عناصر التنقل. هناك نوعان من أشرطة التطبيقات، أشرطة التطبيقات العلوية والجزء السفلي منها. حانات. في ما يلي مظهر كلّ منها وهدفه:
النوع |
المظهر |
الغرض |
---|---|---|
شريط التطبيق العلوي |
في أعلى الشاشة |
يتيح الوصول إلى المهام والمعلومات الرئيسية. يستضيف عادةً عنوانًا وبنود إجراءات أساسية وبعض عناصر التنقّل. |
شريط التطبيق السفلي |
في أسفل الشاشة |
تتضمن عادةً عناصر التنقل الأساسية. ويمكن أن يوفّر أيضًا إمكانية الوصول إلى إجراءات رئيسية أخرى، مثل استخدام زر إجراء عائم مضمَّن. |
لتنفيذ شريط التطبيق العلوي وشريط التطبيق السفلي، استخدِم TopAppBar
BottomAppBar
عنصر قابل للإنشاء، على التوالي. تتيح لك هذه الأدوات إنشاء واجهات متسقة
تضمّن عناصر التحكّم في التنقّل والإجراءات، والتي تتماشى
مع مبادئ تصميم المواد.
أشرطة التطبيقات العلوية
يوضّح الجدول التالي الأنواع الأربعة لشرائط التطبيقات العلوية:
النوع |
مثال |
---|---|
صغيرة: للشاشات التي لا تتطلب الكثير من التنقل أو الإجراءات. |
|
المحاذاة إلى الوسط: للشاشات التي تحتوي على إجراء أساسي واحد. |
|
متوسط: للشاشات التي تتطلّب قدرًا معتدلاً من التنقّل والإجراءات. |
|
كبير: للشاشات التي تتطلب الكثير من التنقل والإجراءات. |
|
واجهة برمجة التطبيقات
تتشابه إلى حد كبير العناصر القابلة للتجميع المختلفة التي تتيح لك تنفيذ شريط الأدوات الأربعة المختلفين في أعلى التطبيق. ويشتركان في عدة مَعلمات رئيسية:
title
: النص الذي يظهر على شريط التطبيقاتnavigationIcon
: الرمز الأساسي للتنقل يظهر في صفحة على يسار شريط التطبيق.actions
: الرموز التي تتيح للمستخدم الوصول إلى الإجراءات الرئيسية تظهر على يمين شريط التطبيق.-
scrollBehavior
: لتحديد كيفية استجابة شريط التطبيق العلوي لانتقال التمرير في المحتوى الداخلي للإطار. -
colors
: لتحديد كيفية ظهور شريط التطبيق
سلوك التمرير
يمكنك التحكّم في استجابة شريط التطبيق عندما يتنقّل المستخدم في أسفل الشاشة.
المحتوى الداخلي لسقافل. للقيام بذلك، قم بإنشاء مثيل
TopAppBarScrollBehavior
ومرِّره إلى شريط التطبيق العلوي
مَعلمة scrollBehavior
.
هناك ثلاثة أنواع من TopAppBarScrollBehavior
. وهي كما يلي:
enterAlwaysScrollBehavior
: عندما يسحب المستخدم الجزء الداخلي للسقالة المحتوى، يتم تصغير شريط التطبيق العلوي. يتم توسيع شريط التطبيق عندما يقوم المستخدم بعد ذلك تسحب المحتوى الداخلي.exitUntilCollapsedScrollBehavior
: مشابه لـenterAlwaysScrollBehavior
، على الرغم من أن شريط التطبيق يتوسع أيضًا عندما يصل المستخدم إلى نهاية المحتوى الداخلي لسقافل.pinnedScrollBehavior
: يظل شريط التطبيقات في مكانه ولا يتفاعل مع. التمرير.
تطبّق الأمثلة التالية العديد من هذه الخيارات.
أمثلة
تقدّم الأقسام التالية عمليات تنفيذ للأنواع الأربعة المختلفة من أشرطة التطبيقات العلوية، بما في ذلك أمثلة متنوعة حول كيفية التحكّم في سلوك الانتقال للأعلى أو للأسفل.
صغير
لإنشاء شريط تطبيق صغير في أعلى الشاشة، استخدِم العنصر القابل للتجميع TopAppBar
. هذا هو
أبسط شريط تطبيق علوي ممكن، وفي هذا المثال يحتوي على عنوان فقط.
لا يُرسِل المثال التالي إلى TopAppBar
قيمة
scrollBehavior
، وبالتالي لا يستجيب للتمرير في
المحتوى الداخلي.
@Composable fun SmallTopAppBarExample() { Scaffold( topBar = { TopAppBar( colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.primaryContainer, titleContentColor = MaterialTheme.colorScheme.primary, ), title = { Text("Small Top App Bar") } ) }, ) { innerPadding -> ScrollContent(innerPadding) } }
تظهر طريقة التنفيذ هذه على النحو التالي:

تمت المحاذاة إلى الوسط
شريط التطبيقات العلوي الذي يتم ضبطه في المنتصف هو نفسه شريط التطبيقات الصغير،
مع أنّ العنوان يكون في المنتصف داخل المكوّن. لتنفيذه، استخدم
المخصّص CenterAlignedTopAppBar
القابل للإنشاء.
يستخدِم هذا المثال enterAlwaysScrollBehavior()
للحصول على القيمة التي يتم تمريرها
لـ scrollBehavior
. ونتيجةً لذلك، يتم تصغير الشريط عندما ينتقل المستخدم إلى
المحتوى الداخلي للإطار.
@Composable fun CenterAlignedTopAppBarExample() { val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) Scaffold( modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { CenterAlignedTopAppBar( colors = TopAppBarDefaults.centerAlignedTopAppBarColors( containerColor = MaterialTheme.colorScheme.primaryContainer, titleContentColor = MaterialTheme.colorScheme.primary, ), title = { Text( "Centered Top App Bar", maxLines = 1, overflow = TextOverflow.Ellipsis ) }, navigationIcon = { IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Localized description" ) } }, actions = { IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.Filled.Menu, contentDescription = "Localized description" ) } }, scrollBehavior = scrollBehavior, ) }, ) { innerPadding -> ScrollContent(innerPadding) } }
تظهر عملية التنفيذ هذه على النحو التالي:

متوسط
يضع شريط التطبيق العلوي المتوسط العنوان أسفل أي رموز إضافية. لإنشاء
واحد، استخدِم العنصر القابل للتجميع MediumTopAppBar
.
مثل المقتطف السابق، يستخدم هذا المثال enterAlwaysScrollBehavior()
لمحاولة
الحصول على القيمة التي يتم تمريرها إلى scrollBehavior
.
@Composable fun MediumTopAppBarExample() { val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarState()) Scaffold( modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { MediumTopAppBar( colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.primaryContainer, titleContentColor = MaterialTheme.colorScheme.primary, ), title = { Text( "Medium Top App Bar", maxLines = 1, overflow = TextOverflow.Ellipsis ) }, navigationIcon = { IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Localized description" ) } }, actions = { IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.Filled.Menu, contentDescription = "Localized description" ) } }, scrollBehavior = scrollBehavior ) }, ) { innerPadding -> ScrollContent(innerPadding) } }
تظهر طريقة التنفيذ هذه على النحو التالي، مع عرض توضيحي لكيفية استخدام التمرير
إظهار سلوك من enterAlwaysScrollBehavior()
:
كبير
يشبه شريط التطبيقات العلوي الكبير الشريط المتوسط، إلا أنّ المسافة الفارغة بين
العنوان والرموز أكبر، ويشغل مساحة أكبر على الشاشة بشكل عام. ل
إنشاء عنصر، استخدِم العنصر القابل للتجميع LargeTopAppBar
.
وعلى عكس المقتطفات السابقة، يستخدم هذا المثال
exitUntilCollapsedScrollBehavior()
للحصول على القيمة التي يتم تمريرها
scrollBehavior
ونتيجةً لذلك، يتم تصغير الشريط عندما ينتقل المستخدم إلى
المحتوى الداخلي للإطار، ولكن يتم توسيعه بعد ذلك عندما ينتقل المستخدم إلى نهاية
المحتوى الداخلي.
@Composable fun LargeTopAppBarExample() { val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(rememberTopAppBarState()) Scaffold( modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { LargeTopAppBar( colors = TopAppBarDefaults.topAppBarColors( containerColor = MaterialTheme.colorScheme.primaryContainer, titleContentColor = MaterialTheme.colorScheme.primary, ), title = { Text( "Large Top App Bar", maxLines = 1, overflow = TextOverflow.Ellipsis ) }, navigationIcon = { IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Localized description" ) } }, actions = { IconButton(onClick = { /* do something */ }) { Icon( imageVector = Icons.Filled.Menu, contentDescription = "Localized description" ) } }, scrollBehavior = scrollBehavior ) }, ) { innerPadding -> ScrollContent(innerPadding) } }
تظهر عملية التنفيذ هذه على النحو التالي:

شريط التطبيق السفلي
لإنشاء شريط تطبيق سفلي، استخدِم عنصر BottomAppBar
القابل للإنشاء. يشبه استخدام هذا العنصر القابل للدمج إلى حدٍ كبير عناصر شريط التطبيقات العلوي القابلة للدمج الموضّحة في الأقسام السابقة من هذه الصفحة. يتم تمرير عناصر قابلة للإنشاء للمفتاح التالي
المَعلمات:
actions
: سلسلة من الرموز التي تظهر على يمين الشريط هذه عادةً ما تكون إما إجراءات رئيسية للشاشة المحددة، أو عناصر تنقل.floatingActionButton
: زر الإجراء الرئيسي الذي يظهر على الجانب الأيمن من الشريط.
@Composable fun BottomAppBarExample() { Scaffold( bottomBar = { BottomAppBar( actions = { IconButton(onClick = { /* do something */ }) { Icon(Icons.Filled.Check, contentDescription = "Localized description") } IconButton(onClick = { /* do something */ }) { Icon( Icons.Filled.Edit, contentDescription = "Localized description", ) } IconButton(onClick = { /* do something */ }) { Icon( Icons.Filled.Mic, contentDescription = "Localized description", ) } IconButton(onClick = { /* do something */ }) { Icon( Icons.Filled.Image, contentDescription = "Localized description", ) } }, floatingActionButton = { FloatingActionButton( onClick = { /* do something */ }, containerColor = BottomAppBarDefaults.bottomAppBarFabColor, elevation = FloatingActionButtonDefaults.bottomAppBarFabElevation() ) { Icon(Icons.Filled.Add, "Localized description") } } ) }, ) { innerPadding -> Text( modifier = Modifier.padding(innerPadding), text = "Example of a scaffold with a bottom app bar." ) } }
تظهر عملية التنفيذ هذه على النحو التالي:
