مكوِّن درج التنقّل هو قائمة قابلة للتحريك تتيح للمستخدمين على أقسام التطبيق المختلفة يمكن للمستخدمين تفعيلها من خلال التمرير السريع من الجانب. أو النقر على أيقونة القائمة.
ضع في اعتبارك حالات الاستخدام الثلاث هذه لتنفيذ درج التنقل:
- تنظيم المحتوى: يتيح للمستخدمين التبديل بين مختلف فئات مثل تطبيقات الأخبار أو التدوينات
- إدارة الحساب: يجب توفير روابط سريعة إلى إعدادات الحساب وأقسام الملف الشخصي في التطبيقات التي تتضمّن حسابات مستخدمين.
- اكتشاف الميزات: يمكنك تنظيم ميزات وإعدادات متعددة في مكان واحد. لتسهيل اكتشاف المستخدمين وإمكانية الوصول إلى التطبيقات المعقدة.
في أسلوب Material Design، هناك نوعان من أدراج التنقّل:
- عادي: مشاركة مساحة داخل شاشة مع محتوى آخر
- وضع النافذة المنبثقة: يظهر فوق المحتوى الآخر ضمن الشاشة.
مثال
يمكنك استخدام العنصر القابل للتجميع ModalNavigationDrawer
لتنفيذ
لائحة تنقّل.
استخدِم الخانة drawerContent
لتوفير ModalDrawerSheet
وتقديم
محتوى الدرج، كما في المثال التالي:
ModalNavigationDrawer( drawerContent = { ModalDrawerSheet { Text("Drawer title", modifier = Modifier.padding(16.dp)) HorizontalDivider() NavigationDrawerItem( label = { Text(text = "Drawer Item") }, selected = false, onClick = { /*TODO*/ } ) // ...other drawer items } } ) { // Screen content }
تقبل ModalNavigationDrawer
عددًا من مَعلمات الأدراج الإضافية. بالنسبة
على سبيل المثال، يمكنك تبديل ما إذا كان الدرج يستجيب للسحب باستخدام
gesturesEnabled
كما في المثال التالي:
ModalNavigationDrawer( drawerContent = { ModalDrawerSheet { // Drawer contents } }, gesturesEnabled = false ) { // Screen content }
السلوك الخاضع للتحكُّم
للتحكّم في كيفية فتح الدرج وإغلاقه، استخدِم DrawerState
. يجب
تمرير DrawerState
إلى ModalNavigationDrawer
باستخدام المَعلمة drawerState
.
يوفر DrawerState
إمكانية الوصول إلى وظيفتَي open
وclose
، بالإضافة إلى
السمات ذات الصلة بحالة الدرج الحالية. تتطلّب دوال التعليق
هذه CoroutineScope
، ويمكنك إنشاء مثيل لها باستخدام
rememberCoroutineScope
. يمكنك أيضًا استدعاء دوال التعليق في
الاستجابة لأحداث واجهة المستخدم.
val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed) val scope = rememberCoroutineScope() ModalNavigationDrawer( drawerState = drawerState, drawerContent = { ModalDrawerSheet { /* Drawer content */ } }, ) { Scaffold( floatingActionButton = { ExtendedFloatingActionButton( text = { Text("Show drawer") }, icon = { Icon(Icons.Filled.Add, contentDescription = "") }, onClick = { scope.launch { drawerState.apply { if (isClosed) open() else close() } } } ) } ) { contentPadding -> // Screen content } }