برای سهولت استفاده، بسیاری از کامپوننتهای داخلی Material 3 ( androidx.compose.material3 ) خودشان insetها را مدیریت میکنند، که این کار بستگی به نحوه قرارگیری کامپوننتها در برنامه شما مطابق با مشخصات Material دارد.
دستکاری در داخل کامپوزیشنها
در زیر لیستی از کامپوننتهای متریال که به طور خودکار insetها را مدیریت میکنند، آمده است.
نوارهای برنامه
-
TopAppBar/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 با نمایش لبه به لبه غیرفعال و فعال نشان میدهد:
Using the PaddingValues parameter in Scaffold is generally enough to inset your UI away from the system UI and display cutouts. Avoid using additional inset handling approaches like rulers, padding modifiers, or inset size modifiers if using Scaffold to avoid applying too much padding to your UI.
نادیده گرفتن درجهای پیشفرض
شما میتوانید پارامتر windowInsets ارسالی به composable را تغییر دهید تا رفتار composable را پیکربندی کنید. این پارامتر میتواند نوع متفاوتی از window inset باشد که به جای آن اعمال میشود، یا با ارسال یک نمونه خالی غیرفعال شود: WindowInsets(0, 0, 0, 0) .
برای مثال، برای غیرفعال کردن مدیریت درج در LargeTopAppBar ، پارامتر windowInsets را روی یک نمونه خالی تنظیم کنید:
LargeTopAppBar( windowInsets = WindowInsets(0, 0, 0, 0), title = { Text("Hi") } )