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

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

इनसेट को हैंडल करने वाले कॉम्पोनेंट

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

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

  • TopAppBar / 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")
    }
)