टैब की मदद से, मिलते-जुलते कॉन्टेंट के ग्रुप व्यवस्थित किए जा सकते हैं. टैब दो तरह के होते हैं:
- प्राइमरी टैब: ये टैब, कॉन्टेंट पैनल में सबसे ऊपर मौजूद ऐप्लिकेशन बार में होते हैं. ये मुख्य कॉन्टेंट डेस्टिनेशन दिखाते हैं. इनका इस्तेमाल तब करना चाहिए, जब टैब के सिर्फ़ एक सेट की ज़रूरत हो.
- सेकंडरी टैब: इनका इस्तेमाल कॉन्टेंट एरिया में किया जाता है, ताकि मिलते-जुलते कॉन्टेंट को अलग किया जा सके और हैरारकी तय की जा सके. ये तब ज़रूरी होते हैं, जब किसी स्क्रीन पर एक से ज़्यादा लेवल के टैब की ज़रूरत हो.

इस पेज पर, मिलती-जुलती स्क्रीन और बुनियादी नेविगेशन के साथ अपने ऐप्लिकेशन में मुख्य टैब दिखाने का तरीका बताया गया है.
एपीआई का प्लैटफ़ॉर्म
टैब लागू करने के लिए, Tab
, PrimaryTabRow
, और SecondaryTabRow
कॉम्पोज़ेबल का इस्तेमाल करें. Tab
कॉम्पोज़ेबल, पंक्ति में मौजूद किसी एक टैब को दिखाता है. आम तौर पर, इसका इस्तेमाल PrimaryTabRow
(प्राइमरी इंडिकेटर टैब के लिए) या SecondaryTabRow
(सेकंडरी इंडिकेटर टैब के लिए) में किया जाता है.
Tab
में ये मुख्य पैरामीटर शामिल हैं:
selected
: यह तय करता है कि मौजूदा टैब को विज़ुअल तौर पर हाइलाइट किया जाए या नहीं.onClick()
: यह ज़रूरी लैम्डा फ़ंक्शन है. इससे यह तय होता है कि उपयोगकर्ता के टैब पर क्लिक करने पर क्या कार्रवाई की जाए. आम तौर पर, नेविगेशन इवेंट को मैनेज करने, चुने गए टैब की स्थिति को अपडेट करने या उससे जुड़ा कॉन्टेंट लोड करने के लिए, इस फ़ंक्शन का इस्तेमाल किया जाता है.text
: टैब में टेक्स्ट दिखाता है. ज़रूरी नहीं.icon
: टैब में एक आइकॉन दिखाता है. ज़रूरी नहीं.enabled
: यह कंट्रोल करता है कि टैब चालू है या नहीं और उससे इंटरैक्ट किया जा सकता है या नहीं. अगर इसे 'गलत है' पर सेट किया जाता है, तो टैब बंद होने की स्थिति में दिखता है और उस पर क्लिक करने पर कोई प्रतिक्रिया नहीं मिलती.
उदाहरण: टैब पर आधारित नेविगेशन
नीचे दिया गया स्निपेट, टैब के साथ एक टॉप नेविगेशन बार लागू करता है, ताकि ऐप्लिकेशन की अलग-अलग स्क्रीन के बीच नेविगेट किया जा सके:
@Composable fun NavigationTabExample(modifier: Modifier = Modifier) { val navController = rememberNavController() val startDestination = Destination.SONGS var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) } Scaffold(modifier = modifier) { contentPadding -> PrimaryTabRow(selectedTabIndex = selectedDestination, modifier = Modifier.padding(contentPadding)) { Destination.entries.forEachIndexed { index, destination -> Tab( selected = selectedDestination == index, onClick = { navController.navigate(route = destination.route) selectedDestination = index }, text = { Text( text = destination.label, maxLines = 2, overflow = TextOverflow.Ellipsis ) } ) } } AppNavHost(navController, startDestination) } }
प्रमुख बिंदु
PrimaryTabRow
, टैब की हॉरिज़ॉन्टल लाइन दिखाता है. इसमें हर टैब,Destination
से जुड़ा होता है.val navController = rememberNavController()
,NavHostController
का एक इंस्टेंस बनाता है और उसे याद रखता है. यहNavHost
में नेविगेशन को मैनेज करता है.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }
, फ़िलहाल चुने गए टैब की स्थिति को मैनेज करता है.startDestination.ordinal
,Destination.SONGS
एनम एंट्री का अंकों वाला इंडेक्स (पोज़िशन) पाता है.
- किसी टैब पर क्लिक करने पर, उससे जुड़ी स्क्रीन पर जाने के लिए
navController.navigate(route = destination.route)
को कॉल किया जाता है. Tab
काonClick
लैम्ब्डा, क्लिक किए गए टैब को विज़ुअल तौर पर हाइलाइट करने के लिएselectedDestination
स्टेटस को अपडेट करता है.- यह चुने गए स्क्रीन का असल कॉन्टेंट दिखाने के लिए,
AppNavHost
कॉम्पोज़ेबल कोnavController
औरstartDestination
पास करता है.
नतीजा
नीचे दी गई इमेज में, पिछले स्निपेट का नतीजा दिखाया गया है:
.png?hl=hi)