שימוש ברכיבי משנה של Material 3

כדי להקל על השימוש, הרבה מהרכיבים הקומפוזביליים המובְנים של Material 3‏ (androidx.compose.material3) מטפלים במרווחים הפנימיים בעצמם, על סמך המיקום של הרכיבים הקומפוזביליים באפליקציה בהתאם למפרטים של Material.

רכיבים קומפוזביליים לטיפול ב-Inset

ברשימה הבאה מופיעים רכיבי Material שמטפלים במרווחים באופן אוטומטי.

סרגלי אפליקציות

  • ‫TopAppBar / CenterAlignedTopAppBar / MediumTopAppBar / LargeTopAppBar: החלת הצדדים העליון והאופקי של סרגלי המידע כמרווח פנימי, כי הם משמשים בחלק העליון של החלון.
  • ‫BottomAppBar: החלק התחתון והחלק האופקי של סרגלי המידע משמשים כמרווח פנימי.

מאגרי תוכן

פיגום

כברירת מחדל, 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")
    }
)