أشرطة التطبيقات

أشرطة التطبيقات هي حاويات توفر للمستخدم إمكانية الوصول إلى الميزات الرئيسية عناصر التنقل. هناك نوعان من أشرطة التطبيقات، أشرطة التطبيقات العلوية والجزء السفلي منها. حانات. في ما يلي مظهر كلّ منها وهدفه:

النوع

المظهر

الغرض

شريط التطبيق العلوي

في أعلى الشاشة

يتيح الوصول إلى المهام والمعلومات الرئيسية. يستضيف عادةً عنوانًا وبنود إجراءات أساسية وبعض عناصر التنقّل.

شريط التطبيق السفلي

في أسفل الشاشة

تتضمن عادةً عناصر التنقل الأساسية. ويمكن أن يوفّر أيضًا إمكانية الوصول إلى إجراءات رئيسية أخرى، مثل استخدام زر إجراء عائم مضمَّن.

مثال على شريط التطبيق العلوي والسفلي
الشكل 1. شريط التطبيق العلوي (على اليمين) وشريط التطبيق السفلي (على اليمين)

لتنفيذ شريط التطبيق العلوي وشريط التطبيق السفلي، استخدِم 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)
    }
}

تظهر طريقة التنفيذ هذه على النحو التالي:

مثال على شريط تطبيق صغير في أعلى الشاشة
الشكل 2. شريط تطبيق علوي صغير

تمت المحاذاة إلى الوسط

شريط التطبيقات العلوي الذي يتم ضبطه في المنتصف هو نفسه شريط التطبيقات الصغير، مع أنّ العنوان يكون في المنتصف داخل المكوّن. لتنفيذه، استخدم المخصّص 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)
    }
}

تظهر عملية التنفيذ هذه على النحو التالي:

اكتب النص البديل هنا.
الشكل 3. شريط تطبيق علوي محاذٍ للوسط.

متوسط

يضع شريط التطبيق العلوي المتوسط العنوان أسفل أي رموز إضافية. لإنشاء واحد، استخدِم العنصر القابل للتجميع 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():

الشكل 4. شريط التطبيقات العلوي الذي تم توسيطه

كبير

يشبه شريط التطبيقات العلوي الكبير الشريط المتوسط، إلا أنّ المسافة الفارغة بين العنوان والرموز أكبر، ويشغل مساحة أكبر على الشاشة بشكل عام. ل إنشاء عنصر، استخدِم العنصر القابل للتجميع 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)
    }
}

تظهر عملية التنفيذ هذه على النحو التالي:

شاشة في تطبيق تتضمّن شريط تطبيق في أسفل الشاشة يحتوي على رموز إجراءات على الجانب الأيسر وزرّ إجراء عائم على الجانب الأيمن
الشكل 5. مثال على تنفيذ شريط تطبيق كبير في أعلى الشاشة

شريط التطبيق السفلي

لإنشاء شريط تطبيق سفلي، استخدِم عنصر 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."
        )
    }
}

تظهر عملية التنفيذ هذه على النحو التالي:

شاشة في تطبيق تتضمّن شريط تطبيق في أسفل الشاشة يحتوي على رموز إجراءات على الجانب الأيسر وزرّ إجراء عائم على الجانب الأيمن
الشكل 6. مثال على تنفيذ شريط تطبيق سفلي

مصادر إضافية