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