כדי להקל על השימוש, הרבה רכיבים קומפוזביליים מובנים של Material 3 (androidx.compose.material3
) מטפלים בעצמם בשוליים הפנימיים, בהתאם למיקום הרכיבים הקומפוזביליים באפליקציה לפי מפרטי Material.
רכיבים קומפוזביליים לטיפול ב-inset
בהמשך מופיעה רשימה של רכיבי 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
שמועבר לרכיב ה-Composable כדי להגדיר את ההתנהגות שלו. הפרמטר הזה יכול להיות סוג אחר של שוליים פנימיים של חלון שיוחל במקום ברירת המחדל, או שניתן להשבית אותו על ידי העברת מופע ריק:
WindowInsets(0, 0, 0, 0)
.
לדוגמה, כדי להשבית את הטיפול בשוליים הפנימיים ב-LargeTopAppBar
, מגדירים את הפרמטר windowInsets
למופע ריק:
LargeTopAppBar( windowInsets = WindowInsets(0, 0, 0, 0), title = { Text("Hi") } )