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

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

לא מומלץ להגדיר באופן ידני תצוגה מקצה לקצה באפליקציה, אבל אם אין ברירה, אפשר לפעול לפי השלבים הבאים:

  1. רוצה להתקשר ל-WindowCompat.setDecorFitsSystemWindows(window, false)?
  2. מגדירים את סרגלי המידע כשקופים.
  3. איך מטפלים ב-inset.

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

כדי לפרוס את האפליקציה מאחורי סרגלי המידע, משתמשים ב-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);
}

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

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

אתם יכולים לערוך את הקובץ 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 של 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);

טיפול בתוספות

לבסוף, האפליקציה צריכה לטפל בתוספות כדי שרכיבי ממשק משתמש קריטיים לא יופיעו בסרגלי המידע ובמגרעת במסך. כדי ללמוד איך לטפל בתוספות, עיינו במסמכי התיעוד של Compose ו-Views.