Jetpack Compose में कई लेआउट कंटेनर उपलब्ध हैं. इनकी मदद से, यूज़र इंटरफ़ेस (यूआई) के कॉम्पोनेंट को व्यवस्थित किया जा सकता है. Row और Column जैसे बुनियादी लेआउट कंपोज़ेबल, आसान अरेंजमेंट को मैनेज करते हैं. हालांकि, कई ऐप्लिकेशन को ज़्यादा रिस्पॉन्सिव और अडैप्टिव कंटेनर की ज़रूरत होती है, क्योंकि स्क्रीन का साइज़ बदलता है और उपयोगकर्ता का डेटा बढ़ता है.
लेआउट कंटेनर में ये शामिल हैं:
- लेज़ी लिस्ट और लेज़ी ग्रिड:
LazyColumn,LazyRow, औरLazyVerticalGridजैसे कॉम्पोनेंट, बड़े या डाइनैमिक साइज़ वाले डेटा सेट को बेहतर तरीके से दिखाते हैं. इसके लिए, वे सिर्फ़ उन आइटम को कंपोज़ और लेआउट करते हैं जो फ़िलहाल व्यूपोर्ट में दिख रहे हैं. - पेजर:
HorizontalPagerऔरVerticalPagerजैसे कंटेनर, जिनकी मदद से उपयोगकर्ता कॉन्टेंट के पेजों के बीच स्वाइप या स्क्रोल कर सकते हैं. - फ़्लो लेआउट: रिस्पॉन्सिव वन-डाइमेंशनल कंटेनर (
FlowRowऔरFlowColumn), जो जगह खत्म होने पर, ओवरफ़्लो होने वाले आइटम को अगली लाइन या कॉलम में अपने-आप रैप कर देते हैं. - ग्रिड: यह एक फ़्लेक्सिबल, टू-डाइमेंशनल स्ट्रक्चर होता है. इसमें आइटम को कई कॉलम या कई लाइन वाले लेआउट में दिखाया जाता है. ये लेआउट, कंटेनर के साइज़ के हिसाब से अडजस्ट हो जाते हैं.
- फ़्लेक्सबॉक्स: यह सीएसएस फ़्लेक्सबॉक्स से प्रेरित, अडैप्टिव कंटेनर है. इससे आपको इस बात पर बारीकी से कंट्रोल मिलता है कि आइटम, उपलब्ध जगह को भरने के लिए मुख्य और क्रॉस ऐक्सिस के साथ कैसे रैप, बड़े, छोटे, और अलाइन होते हैं.
सही लेआउट कंटेनर चुनना
Compose में लेआउट बनाते समय, बेसिक और ऐडवांस लेआउट कंटेनर में से किसी एक को चुनना, आपके डिज़ाइन पर निर्भर करता है. साथ ही, इस बात पर भी निर्भर करता है कि जगह कम होने पर आइटम को रैप करना ज़रूरी है या नहीं और आइटम का साइज़ डाइनैमिक तरीके से कैसे बदलता है.
नीचे दी गई टेबल में, Compose 1D के हर लेआउट कंटेनर की सुविधाओं के बारे में खास जानकारी दी गई है:
कंटेनर |
आइटम को नई लाइनों में रैप करना |
हर आइटम के हिसाब से बढ़ोतरी |
हर आइटम के लिए, इन्वेंट्री में कमी |
हर आइटम का शुरुआती साइज़ |
कई लाइनों पर उपलब्ध जगह को भरने के लिए, आइटम का साइज़ बढ़ जाता है |
आइटम का क्रम बदलना |
लेज़ी लोडिंग |
इनके लिए सबसे सही: |
पंक्ति / कॉलम |
❌ |
|
❌ |
❌ |
❌ |
❌ |
❌ |
|
FlowRow / FlowColumn |
✅ |
सीमित |
❌ |
❌ |
कुछ हद तक |
❌ |
❌ |
|
LazyRow / LazyColumn |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
|
FlexBox |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
यहां दी गई टेबल में, Grid और इसके जैसे अन्य कंपोज़ेबल की सुविधाओं के बारे में खास जानकारी दी गई है:
कंटेनर |
सटीक 2D अलाइनमेंट |
आइटम स्पैनिंग (कॉलम) |
आइटम स्पैनिंग (पंक्तियां) |
लेज़ी लोडिंग |
इनके लिए सबसे सही: |
ग्रिड |
✅ |
✅ ( |
✅ |
❌ |
|
LazyVerticalGrid |
✅ |
✅ ( |
❌ |
✅ |
|
LazyStaggeredGrid |
❌ (सिर्फ़ 1D) |
Partial (full span only) |
❌ |
✅ |
|
LazyHorizontalGrid |
✅ |
❌ |
✅ |
✅ |
|
पंक्तियों और कॉलम को मर्ज करना |
❌ |
❌ |
❌ |
❌ |
|