برای سهولت استفاده، بسیاری از کامپوننتهای داخلی Material 3 ( androidx.compose.material3 ) خودشان insetها را مدیریت میکنند، که این کار بستگی به نحوه قرارگیری کامپوننتها در برنامه شما مطابق با مشخصات Material دارد.
دستکاری در داخل کامپوزیشنها
در زیر لیستی از کامپوننتهای متریال که به طور خودکار insetها را مدیریت میکنند، آمده است.
نوارهای برنامه
-
TopAppBar/SmallTopAppBar/CenterAlignedTopAppBar/MediumTopAppBar/LargeTopAppBar: از آنجایی که در بالای پنجره استفاده میشود، ضلعهای بالا و افقی میلههای سیستم را به عنوان فاصلهگذاری اعمال میکند. -
BottomAppBar: ضلعهای پایین و افقی میلههای سیستم را به عنوان فاصلهگذاری اعمال میکند.
ظروف محتوا
-
ModalDrawerSheet/DismissibleDrawerSheet/PermanentDrawerSheet(محتوای داخل یک کشوی ناوبری مودال): درجهای عمودی و شروع را به محتوا اعمال میکند. -
ModalBottomSheet: لایههای پایینی را به صورت inset اعمال میکند. -
NavigationBar: درجهای پایینی و افقی را اعمال میکند. -
NavigationRail: درجهای عمودی و شروع را اعمال میکند.
داربست
به طور پیشفرض، Scaffold مقادیر درج شده (insets) را به عنوان پارامتر PaddingValues برای مصرف و استفاده شما فراهم میکند. Scaffold مقادیر درج شده را به محتوا اعمال نمیکند؛ این مسئولیت بر عهده شماست. به عنوان مثال، برای مصرف این مقادیر درج شده با یک LazyColumn درون یک Scaffold :
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 ) { // .. } }
ویدیوی زیر یک LazyColumn درون یک Scaffold با نمایش لبه به لبه غیرفعال و فعال نشان میدهد:
استفاده از پارامتر PaddingValues در Scaffold معمولاً برای درج رابط کاربری شما به دور از رابط کاربری سیستم و نمایش برشها کافی است. در صورت استفاده از Scaffold ، از استفاده از رویکردهای اضافی برای مدیریت درج مانند خطکشها، اصلاحکنندههای حاشیهگذاری یا اصلاحکنندههای اندازه درج خودداری کنید تا از اعمال حاشیهگذاری بیش از حد به رابط کاربری خود جلوگیری کنید.
نادیده گرفتن درجهای پیشفرض
شما میتوانید پارامتر windowInsets ارسالی به composable را تغییر دهید تا رفتار composable را پیکربندی کنید. این پارامتر میتواند نوع متفاوتی از window inset باشد که به جای آن اعمال میشود، یا با ارسال یک نمونه خالی غیرفعال شود: WindowInsets(0, 0, 0, 0) .
برای مثال، برای غیرفعال کردن مدیریت درج در LargeTopAppBar ، پارامتر windowInsets را روی یک نمونه خالی تنظیم کنید:
LargeTopAppBar( windowInsets = WindowInsets(0, 0, 0, 0), title = { Text("Hi") } )