הגדרה ידנית של התצוגה מקצה לקצה

כדי להפעיל את התצוגה מקצה לקצה באפליקציה, צריך לקרוא ל-enableEdgeToEdge. ההגדרה הזו אמורה להספיק לרוב האפליקציות. במדריך הזה מוסבר איך להפעיל את התכונה 'תצוגה מקצה לקצה' אם האפליקציה צריכה לעשות זאת בלי להשתמש ב-enableEdgeToEdge.

פריסת האפליקציה במסך מלא

משתמשים ב-WindowCompat.setDecorFitsSystemWindows(window, false) כדי להגדיר את הפריסה של האפליקציה מאחורי סרגלי המידע, כמו בדוגמת הקוד הבאה:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  WindowCompat.setDecorFitsSystemWindows(window, false)
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
}

שינוי הצבע של סרגלי המערכת

כשמשתמשים בפריסה מקצה לקצה, האפליקציה צריכה לשנות את הצבעים של סרגלי המערכת כדי שהתוכן שמתחתיהם יהיה גלוי. אחרי שהאפליקציה מבצעת את השלב הזה, המערכת מטפלת בכל ההגנה החזותית של ממשק המשתמש במצב ניווט באמצעות מחוות ובמצב לחצנים.

  • מצב ניווט באמצעות מחוות: המערכת מחילה התאמה דינמית של הצבעים, כך שהתוכן של סרגלי המערכת משנה את הצבע בהתאם לתוכן שמאחוריהם. בדוגמה הבאה, ידית האחיזה בסרגל הניווט משתנה לצבע כהה כשהיא מעל תוכן בהיר, ולצבע בהיר כשהיא מעל תוכן כהה.
איור 1. שינויי צבע במצב ניווט באמצעות תנועות.
  • מצב לחצנים: המערכת מחילה שכבת כיסוי שקופה למחצה מאחורי סרגלי המערכת (לרמת API 29 ומעלה) או סרגל מערכת שקוף (לרמת API 28 ומטה).
תמונה שבה רואים סרגלי מערכת שקופים למחצה
איור 2. מיסוך שקוף מאחורי סרגלי המערכת.
  • צבע התוכן בשורת הסטטוס: מגדיר את הצבע של התוכן בשורת הסטטוס, כמו השעה והסמלים.
תמונה שמציגה את הצבע של התוכן בשורת הסטטוס
איור 3. צבע התוכן בשורת הסטטוס.

אפשר לערוך את הקובץ themes.xml כדי להגדיר את הצבע של סרגל הניווט, ואם רוצים, להגדיר את שורת המצב כשקופה ואת צבע התוכן של שורת המצב כהה.

<!-- values-v29/themes.xml -->
<style name="Theme.MyApp">
  <item name="android:navigationBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set to transparent if your app is drawing behind the status bar. -->
  <item name="android:statusBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set for a light status bar with dark content. -->
  <item name="android:windowLightStatusBar">
    true
  </item>
</style>

אפשר להשתמש ישירות ב-API‏ WindowInsetsController, אבל מומלץ מאוד להשתמש בספריית התמיכה WindowInsetsControllerCompat כשזה אפשרי. אפשר להשתמש ב-WindowInsetsControllerCompat API במקום ב-theme.xml כדי לשלוט בצבע התוכן של סרגל הסטטוס. כדי לעשות את זה, משתמשים בפונקציה setAppearanceLightNavigationBars() ומעבירים את הערך true כדי לשנות את צבע החזית של הניווט לצבע בהיר, או את הערך false כדי לחזור לצבע ברירת המחדל.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

WindowInsetsControllerCompat windowInsetsController =
      ViewCompat.getWindowInsetsController(getWindow().getDecorView());
if (windowInsetsController == null) {
    return;
}

windowInsetsController.setAppearanceLightNavigationBars(true);