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