يسمح شريط التنقّل للمستخدمين بالتبديل بين الوجهات في التطبيق. يجب استخدام أشرطة التنقّل لإجراء ما يلي:
- من ثلاث إلى خمس وجهات ذات أهمية متساوية
- أحجام النوافذ المُدمَجة
- وجهات متسقة على جميع شاشات التطبيق

توضِّح لك هذه الصفحة كيفية عرض شريط تنقّل في تطبيقك مع الشاشات المعنيّة والتنقّل الأساسي.
واجهة برمجة التطبيقات
استخدِم العنصرَين القابلَين للتجميع NavigationBar
وNavigationBarItem
لتطبيق منطق تبديل الوجهة. يمثّل كل NavigationBarItem
وجهة واحدة.
تتضمّن NavigationBarItem
المَعلمات الرئيسية التالية:
selected
: لتحديد ما إذا كان سيتم تمييز العنصر الحالي بشكل مرئيonClick()
: دالة lambda مطلوبة تحدّد الإجراء الذي يجب تنفيذه عندما ينقر المستخدم على العنصر. وعادةً ما تعالج في هذه الطريقة أحداث التنقّل أو تعدّل حالة العنصر المحدّد أو تحمّل المحتوى المرتبط.label
: لعرض نص داخل العنصر اختيارية:icon
: تعرِض رمزًا داخل العنصر. اختيارية:
مثال: شريط التنقل السفلي
ينفِّذ المقتطف التالي شريط تنقّل سفليًا يتضمّن عناصر حتى يتمكّن المستخدمون من التنقّل بين الشاشات المختلفة في التطبيق:
@Composable fun NavigationBarExample(modifier: Modifier = Modifier) { val navController = rememberNavController() val startDestination = Destination.SONGS var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) } Scaffold( modifier = modifier, bottomBar = { NavigationBar(windowInsets = NavigationBarDefaults.windowInsets) { Destination.entries.forEachIndexed { index, destination -> NavigationBarItem( selected = selectedDestination == index, onClick = { navController.navigate(route = destination.route) selectedDestination = index }, icon = { Icon( destination.icon, contentDescription = destination.contentDescription ) }, label = { Text(destination.label) } ) } } } ) { contentPadding -> AppNavHost(navController, startDestination, modifier = Modifier.padding(contentPadding)) } }
النقاط الرئيسية
- تعرِض
NavigationBar
مجموعة من العناصر، ويرتبط كل عنصر بـDestination
. - ينشئ
val navController = rememberNavController()
ويحفظ مثيلًا منNavHostController
الذي يدير التنقّل ضمنNavHost
. var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal)
} تُدير حالة العنصر المحدّد حاليًا.- تدير
var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }
حالة العنصر المحدّد حاليًا.- تحصل
startDestination.ordinal
على الفهرس الرقمي (الموضع) لإدخال التعدادDestination.SONGS
.
- تحصل
- عند النقر على عنصر، يتم استدعاء
navController.navigate(route = destination.route)
للانتقال إلى الشاشة المقابلة. - تعمل دالة
onClick
lambda فيNavigationBarItem
على تعديل حالةselectedDestination
لتسليط الضوء على العنصر الذي تم النقر عليه. - ويُستخدَم هذا الإجراء للاتصال بعنصر
AppNavHost
القابل للتجميع، مع تمريرnavController
وstartDestination
، لعرض المحتوى الفعلي للشاشة المحدّدة.
النتيجة
تعرض الصورة التالية شريط التنقّل الناتج عن المقتطف السابق:
