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

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

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

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

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

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