Material 3 इनसेट का इस्तेमाल करना

इस्तेमाल करने में आसानी के लिए, Material 3 के कई पहले से मौजूद कॉम्पोज़ेबल (androidx.compose.material3), इनसेट को खुद मैनेज करते हैं. यह इस बात पर निर्भर करता है कि Material के स्पेसिफ़िकेशन के मुताबिक, आपके ऐप्लिकेशन में कॉम्पोज़ेबल कैसे रखे गए हैं.

इनसेट में कॉम्पोज़ेबल हैंडलिंग

यहां उन Material Components की सूची दी गई है जो अपने-आप इनसेट मैनेज करते हैं.

ऐप्लिकेशन बार

  • TopAppBar / SmallTopAppBar / CenterAlignedTopAppBar / MediumTopAppBar / LargeTopAppBar: सिस्टम बार के टॉप और हॉरिज़ॉन्टल साइड को पैडिंग के तौर पर लागू करता है, क्योंकि इसका इस्तेमाल विंडो के सबसे ऊपर किया जाता है.
  • BottomAppBar: सिस्टम बार के नीचे और हॉरिज़ॉन्टल हिस्सों को पैडिंग के तौर पर लागू करता है.

कॉन्टेंट कंटेनर

  • ModalDrawerSheet / DismissibleDrawerSheet / PermanentDrawerSheet (मोडल नेविगेशन ड्रॉअर में मौजूद कॉन्टेंट): कॉन्टेंट में वर्टिकल और स्टार्ट इनसेट लागू करता है.
  • ModalBottomSheet: बॉटम इनसेट लागू करता है.
  • NavigationBar : नीचे और हॉरिज़ॉन्टल इनसेट लागू करता है.
  • NavigationRail: वर्टिकल और शुरू इनसेट लागू करता है.

मचान

डिफ़ॉल्ट रूप से, Scaffold, पैरामीटर paddingValues के तौर पर इनसेट उपलब्ध कराता है, ताकि आप उन्हें इस्तेमाल कर सकें. Scaffold, कॉन्टेंट में इनसेट लागू नहीं करता. यह आपकी ज़िम्मेदारी है. उदाहरण के लिए, Scaffold के अंदर LazyColumn के साथ इनसेट का इस्तेमाल करने के लिए:

Scaffold { innerPadding ->
    // innerPadding contains inset information for you to use and apply
    LazyColumn(
        // consume insets as scaffold doesn't do it by default
        modifier = Modifier.consumeWindowInsets(innerPadding),
        contentPadding = innerPadding
    ) {
        // ..
    }
}

इस वीडियो में, Scaffold में LazyColumn दिखाया गया है. इसमें, पूरे डिवाइस के स्क्रीन पर ऐप्लिकेशन दिखने की सुविधा को बंद और चालू किया गया है:

डिफ़ॉल्ट इनसेट बदलना

कॉम्पोज़ेबल के व्यवहार को कॉन्फ़िगर करने के लिए, कॉम्पोज़ेबल में पास किए गए windowInsets पैरामीटर को बदला जा सकता है. इस पैरामीटर के तौर पर, किसी दूसरी तरह का विंडो इनसेट लागू किया जा सकता है. इसके अलावा, खाली इंस्टेंस:WindowInsets(0, 0, 0, 0) पास करके, इसे बंद भी किया जा सकता है.

उदाहरण के लिए, LargeTopAppBar पर इनसेट हैंडल करने की सुविधा बंद करने के लिए, windowInsets पैरामीटर को खाली इंस्टेंस पर सेट करें:

LargeTopAppBar(
    windowInsets = WindowInsets(0, 0, 0, 0),
    title = {
        Text("Hi")
    }
)