साथ काम करने वाले पैनल का कैननिकल लेआउट, उपयोगकर्ता का ध्यान आपके ऐप्लिकेशन के मुख्य हिस्से पर फ़ोकस करता है कॉन्टेंट बनाने के साथ-साथ, उसके काम के कॉन्टेंट को भी दिखाया जा सकता है. उदाहरण के लिए, मुख्य कॉन्टेंट पैनल में हाल ही की फ़िल्म की जानकारी दिख सकती है. इसके लिए, पैनल में ऐसी दूसरी फ़िल्मों की सूची दिखती है जो मिलती-जुलती या एक जैसी थीम पर आधारित होती हैं निर्देशक या कलाकार हैं. सहायक पैनल के कैननिकल लेआउट के बारे में ज़्यादा जानकारी के लिए, Material 3 के सहायक पैनल से जुड़े दिशा-निर्देश देखें.
सहायक पैनल को लागू करना
SupportingPaneScaffold
में ज़्यादा से ज़्यादा तीन पैनल होते हैं: मुख्य पैनल, सहायक पैनल, और एक वैकल्पिक पैनल. स्कैफ़ोल्ड
यह विंडो स्पेस को तीन पैनलों में बांटने के लिए, सभी कैलकुलेशन करता है. चालू है
बड़ी स्क्रीन पर, स्कैफ़ोल्ड में मुख्य पैनल दिखता है. साथ ही, स्क्रीन के ऊपर वाला पैनल चालू होता है
किनारे पर हैं. छोटी स्क्रीन पर, स्कैफ़ोल्ड मुख्य या सहायक पैनल को फ़ुल स्क्रीन में दिखाता है.
डिपेंडेंसी जोड़ें
SupportingPaneScaffold
इसमें शामिल है:
मटीरियल 3 अडैप्टिव लेआउट लाइब्रेरी.
अपनी build.gradle
फ़ाइल में इन तीन संबंधित डिपेंडेंसी को जोड़ें
ऐप्लिकेशन या मॉड्यूल:
Kotlin
implementation("androidx.compose.material3.adaptive:adaptive") implementation("androidx.compose.material3.adaptive:adaptive-layout") implementation("androidx.compose.material3.adaptive:adaptive-navigation")
ग्रूवी
implementation 'androidx.compose.material3.adaptive:adaptive' implementation 'androidx.compose.material3.adaptive:adaptive-layout' implementation 'androidx.compose.material3.adaptive:adaptive-navigation'
- अडैप्टिव — लो-लेवल बिल्डिंग ब्लॉक, जैसे कि
HingeInfo
औरPosture
- अडैप्टिव लेआउट — अडैप्टिव लेआउट, जैसे कि
SupportingPaneScaffold
- अडैप्टिव नेविगेशन — अलग-अलग जगहों पर नेविगेट करने और नेविगेट करने के लिए कंपोज़ेबल पैनल के बीच
नेविगेटर और स्कैफ़ोल्ड बनाएं
छोटी विंडो में, एक बार में सिर्फ़ एक पैनल दिखता है. इसलिए,
दूसरी जगह ले जाने और आने-जाने के लिए ThreePaneScaffoldNavigator
पैनल. इसके साथ नेविगेटर का एक इंस्टेंस बनाएं
rememberSupportingPaneScaffoldNavigator
.
पिछले जेस्चर इस्तेमाल करने के लिए, BackHandler
का इस्तेमाल करें.
canNavigateBack()
और कॉल
navigateBack()
:
val navigator = rememberSupportingPaneScaffoldNavigator() BackHandler(navigator.canNavigateBack()) { navigator.navigateBack() }
मचान बनाने के लिए PaneScaffoldDirective
की ज़रूरत होती है, जो
यह कंट्रोल करता है कि स्क्रीन को कैसे बांटना है और कितना स्पेस इस्तेमाल करना है. साथ ही,
ThreePaneScaffoldValue
, जिससे मौजूदा समय की जानकारी मिलती है
पैनल की स्थिति (जैसे कि वे विस्तृत हैं या छिपे हुए हैं). डिफ़ॉल्ट के लिए
नेविगेटर के scaffoldDirective
विकल्प का इस्तेमाल करें और
scaffoldValue
:
SupportingPaneScaffold( directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, mainPane = { /*...*/ }, supportingPane = { /*...*/ }, )
मुख्य पैनल और सहायक पैनल, कॉम्पोज़ेबल होते हैं. इनमें आपका कॉन्टेंट होता है. इस्तेमाल की जाने वाली चीज़ें
के दौरान डिफ़ॉल्ट पैनल ऐनिमेशन लागू करने के लिए AnimatedPane
नेविगेशन. स्कैफ़ोल्ड की वैल्यू का इस्तेमाल करके, यह पता करें कि साथ काम करने वाला पैनल सही से काम कर रहा है या नहीं
छिपाया गया हो; अगर हां, तो
navigateTo(ThreePaneScaffoldRole.Secondary)
सहायक पैनल का इस्तेमाल करें.
यहां स्कैफ़ोल्ड को पूरी तरह लागू करने की जानकारी दी गई है:
val navigator = rememberSupportingPaneScaffoldNavigator() BackHandler(navigator.canNavigateBack()) { navigator.navigateBack() } SupportingPaneScaffold( directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, mainPane = { AnimatedPane(modifier = Modifier.safeContentPadding()) { // Main pane content if (navigator.scaffoldValue[SupportingPaneScaffoldRole.Supporting] == PaneAdaptedValue.Hidden) { Button( modifier = Modifier.wrapContentSize(), onClick = { navigator.navigateTo(SupportingPaneScaffoldRole.Supporting) } ) { Text("Show supporting pane") } } else { Text("Supporting pane is shown") } } }, supportingPane = { AnimatedPane(modifier = Modifier.safeContentPadding()) { // Supporting pane content Text("Supporting pane") } }, )
पैनल कंपोज़ेबल एक्सट्रैक्ट करें
SupportingPaneScaffold
के अलग-अलग पैनल को अलग-अलग पैनल में निकालें
कंपोज़ेबल, ताकि उन्हें दोबारा इस्तेमाल किया जा सके और टेस्ट किया जा सके. अगर आपको डिफ़ॉल्ट ऐनिमेशन चाहिए, तो AnimatedPane
को ऐक्सेस करने के लिए ThreePaneScaffoldScope
का इस्तेमाल करें:
@Composable fun ThreePaneScaffoldScope.MainPane( shouldShowSupportingPaneButton: Boolean, onNavigateToSupportingPane: () -> Unit, modifier: Modifier = Modifier, ) { AnimatedPane(modifier = modifier.safeContentPadding()) { // Main pane content if (shouldShowSupportingPaneButton) { Button(onClick = onNavigateToSupportingPane) { Text("Show supporting pane") } } else { Text("Supporting pane is shown") } } } @Composable fun ThreePaneScaffoldScope.SupportingPane( modifier: Modifier = Modifier, ) { AnimatedPane(modifier = modifier.safeContentPadding()) { // Supporting pane content Text("This is the supporting pane") } }
पैनल को कंपोज़ेबल में निकालने से,
SupportingPaneScaffold
(इन्हें लागू करने के लिए, इनकी तुलना करें
पिछले सेक्शन में मचान जोड़ रहे हैं):
val navigator = rememberSupportingPaneScaffoldNavigator() BackHandler(navigator.canNavigateBack()) { navigator.navigateBack() } SupportingPaneScaffold( directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, mainPane = { MainPane( shouldShowSupportingPaneButton = navigator.scaffoldValue.secondary == PaneAdaptedValue.Hidden, onNavigateToSupportingPane = { navigator.navigateTo(ThreePaneScaffoldRole.Secondary) } ) }, supportingPane = { SupportingPane() }, )