כדי להקל על השימוש, הרבה רכיבים קומפוזביליים מובנים של Material 3 (androidx.compose.material3) מטפלים בעצמם בשוליים הפנימיים, בהתאם למיקום הרכיבים הקומפוזביליים באפליקציה לפי מפרטי Material.
פונקציות קומפוזביליות לטיפול בשוליים פנימיים
בהמשך מופיעה רשימה של רכיבי Material שמטפלים אוטומטית ב-insets.
סרגלי אפליקציות
-
TopAppBar/SmallTopAppBar/CenterAlignedTopAppBar/MediumTopAppBar/LargeTopAppBar: המערכת מוסיפה ריווח (padding) בצד העליון ובצד האופקי של סרגלי המערכת, כי נעשה שימוש בערך הזה בחלק העליון של החלון. -
BottomAppBar: המרווח הפנימי מוגדר כתחתון ואופקי בצדדים של סרגלי המערכת.
קונטיינרים של תוכן
-
ModalDrawerSheet/DismissibleDrawerSheet/PermanentDrawerSheet(תוכן בתוך מגירת ניווט מודאלית): מוסיף לתוכן שוליים פנימיים אנכיים והתחלתיים. -
ModalBottomSheet: החלת השוליים הפנימיים התחתונים. -
NavigationBar: החלת שוליים פנימיים תחתונים ואופקיים. -
NavigationRail: החלת השוליים הפנימיים האנכיים וההתחלתיים.
פיגום
כברירת מחדל, Scaffold מספקת לכם את התוספים כפרמטר PaddingValues לשימושכם.
Scaffold לא מוסיף את השוליים הפנימיים לתוכן, האחריות לכך היא שלכם.
לדוגמה, כדי להשתמש ב-insets האלה עם 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 שמועבר לרכיב הניתן להרכבה כדי להגדיר את ההתנהגות שלו. הפרמטר הזה יכול להיות סוג אחר של שוליים פנימיים של חלון שיוחל במקום זאת, או שהוא יכול להיות מושבת על ידי העברת מופע ריק:
WindowInsets(0, 0, 0, 0).
לדוגמה, כדי להשבית את הטיפול בשוליים הפנימיים ב-LargeTopAppBar, מגדירים את הפרמטר windowInsets למופע ריק:
LargeTopAppBar( windowInsets = WindowInsets(0, 0, 0, 0), title = { Text("Hi") } )