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

אפשר להפעיל את התצוגה מקצה לקצה באפליקציה באמצעות קריאה 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. שינויי צבעים בניווט באמצעות תנועות במצב תצוגה.
  • מצב לחצן: המערכת מחילה שקיפות שקופה scrim מאחורי פסי המערכת (ל-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>

אפשר להשתמש WindowInsetsController API באופן ישיר, אבל מומלץ מאוד להשתמש בספריית התמיכה. WindowInsetsControllerCompat כשהדבר אפשרי. אתם יכולים להשתמש ב-API של WindowInsetsControllerCompat במקום 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);