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

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

इनसेट को मैनेज करने वाले कंपोज़ेबल

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

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

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

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

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

Scaffold

डिफ़ॉल्ट रूप से, 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 दिखाया गया है. इसमें एज-टू-एज डिसप्ले की सुविधा बंद और चालू है:

आम तौर पर, Scaffold में PaddingValues पैरामीटर का इस्तेमाल करने से, यूज़र इंटरफ़ेस (यूआई) को सिस्टम यूआई और डिसप्ले कटआउट से दूर रखा जा सकता है. अगर Scaffold का इस्तेमाल किया जा रहा है, तो इनसेट को मैनेज करने के अन्य तरीकों का इस्तेमाल न करें. जैसे, रूलर, पैडिंग मॉडिफ़ायर या इनसेट साइज़ मॉडिफ़ायर. ऐसा इसलिए, ताकि आपके यूज़र इंटरफ़ेस (यूआई) पर ज़्यादा पैडिंग लागू न हो.

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

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

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

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