يوفّر Jetpack Compose العديد من حاويات التنسيق لمساعدتك في تنظيم مكوّنات واجهة المستخدم وترتيبها. على الرغم من أنّ الدوال المركّبة الأساسية للتنسيق، مثل Row وColumn، تعالج الترتيبات البسيطة، تتطلّب العديد من التطبيقات حلولاً أكثر استجابةً وتكيُّفًا للحاويات مع تغيُّر أحجام الشاشات وزيادة بيانات المستخدمين.
تتضمّن حاويات التنسيق ما يلي:
- القوائم والشبكات التي تستخدم التحميل الكسول: مكوّنات مثل
LazyColumnوLazyRowوLazyVerticalGridالتي تعرض بكفاءة مجموعات بيانات كبيرة أو ذات حجم ديناميكي من خلال إنشاء وتنسيق العناصر المرئية حاليًا في إطار العرض فقط. - التنقّل بين الصفحات: حاويات مثل
HorizontalPagerوVerticalPagerتتيح للمستخدمين التمرير سريعًا أو التنقّل بين صفحات المحتوى - تخطيطات التدفق: حاويات أحادية البُعد متجاوبة (
FlowRowوFlowColumn) تلتف تلقائيًا حول العناصر الفائضة إلى الصف أو العمود التالي عند نفاد المساحة. - الشبكة: هي بنية مرنة ثنائية الأبعاد تعرض العناصر في تنسيقات متعددة الأعمدة أو الصفوف تتكيّف مع حجم الحاوية.
- FlexBox: حاوية تكيُّفية مستوحاة من CSS Flexbox توفّر تحكّمًا دقيقًا في كيفية التفاف العناصر وتوسيعها وتقليصها ومحاذاتها على طول المحاور الرئيسية والمتقاطعة لملء المساحة المتاحة.
اختيار حاوية التنسيق الصحيحة
عند إنشاء التنسيقات في Compose، يعتمد الاختيار بين حاويات التنسيق الأساسية والأكثر تقدمًا على تصميمك، وما إذا كان يجب التفاف العناصر عندما تكون المساحة مقيدة، وكيفية تغيير حجم العناصر ديناميكيًا.
يلخّص الجدول التالي إمكانات كل حاوية من حاويات تنسيق Compose 1D:
الحاوية |
التفاف العناصر إلى أسطر جديدة |
النمو لكل سلعة |
Per-item shrink |
الحجم الأولي لكل عنصر |
تتوسّع العناصر لملء المساحة المتاحة على أسطر متعددة |
إعادة ترتيب العناصر |
التحميل الكسول |
يناسب هذا الخيار: |
الصف / العمود |
❌ |
✅ (عبر |
❌ |
❌ |
❌ |
❌ |
❌ |
|
FlowRow / FlowColumn |
✅ |
محدود |
❌ |
❌ |
جزئية |
❌ |
❌ |
|
LazyRow / LazyColumn |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
|
FlexBox |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
يلخّص الجدول التالي إمكانات Grid والدوال المركّبة الأخرى المشابهة:
الحاوية |
التوافق الكامل مع الأبعاد الثنائية |
امتداد العنصر (الأعمدة) |
امتداد العنصر (الصفوف) |
التحميل الكسول |
يناسب هذا الخيار: |
الشبكة |
✅ |
✅ (عبر |
✅ |
❌ |
|
LazyVerticalGrid |
✅ |
✅ (عبر |
❌ |
✅ |
|
LazyStaggeredGrid |
❌ (يوم واحد فقط) |
جزئي (الامتداد الكامل فقط) |
❌ |
✅ |
|
LazyHorizontalGrid |
✅ |
❌ |
✅ |
✅ |
|
دمج الصفوف والأعمدة |
❌ |
❌ |
❌ |
❌ |
|