תצוגה מקצה לקצה מאפשרת לאפליקציה לרנדר את ממשק המשתמש שלה מאחורי סרגלי המידע – שורת הסטטוס, שורת הכיתוב וסרגל הניווט – כדי לספק חוויית משתמש עשירה יותר. אם אתם מטרגטים מכשירים עם Android 15 (רמת API 35) ומעלה, התצוגה מקצה לקצה נאכפת כברירת מחדל.
כדי להציג תוכן מקצה לקצה בצורה נכונה בכל גרסאות Android, צריך לפעול לפי השלבים הבאים. בלי השלבים האלה, יכול להיות שהאפליקציה תציג צבעים אחידים מאחורי סרגלי המידע, או שהתוכן שלה לא יונפש בסנכרון עם המעברים של המקלדת הווירטואלית (IME).
מיומנויות ב-Android
הצגת הקוד ב-GitHubהוספת תמיכה בתצוגה מקצה לקצה
android skills add edge-to-edge1. הפעלת תצוגה מקצה לקצה
כדי להפעיל את התצוגה מקצה לקצה בגרסאות קודמות של Android, צריך להפעיל את enableEdgeToEdge() ב-method Activity.onCreate():
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() // ... }
כברירת מחדל, enableEdgeToEdge() הופך את סרגלי המידע לשקופים, חוץ משיטת מעבר בין מסכים ב-3 כפתורים, שבה הוא מחיל מסך שקוף למחצה על סרגל הניווט כדי לשפר את הניגודיות. הצבע של סמלי המערכת והמסך המעומעם מותאם לעיצוב הבהיר או הכהה של המערכת.
2. הגדרת windowSoftInputMode
מגדירים את android:windowSoftInputMode="adjustResize" ברשומה AndroidManifest.xml של הפעילות. ההגדרה הזו מאפשרת לאפליקציה לקבל הוספות של IME, וכך אתם יכולים להתאים את הפריסה עם ריפוד כשהמקלדת הווירטואלית מופיעה או נעלמת.
<!-- In your AndroidManifest.xml file: -->
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize"
android:theme="@style/Theme.MyApplication"
android:exported="true">
...
</activity>
3. טיפול בחפיפות באמצעות הוספת מרווחים
אחרי שמפעילים את התצוגה מקצה לקצה, יכול להיות שחלק מהתוכן ומהרכיבים בממשק המשתמש של האפליקציה ירונדרו מאחורי סרגלי המידע. כדי למנוע מצב שבו סרגלי המידע מסתירים רכיבים קריטיים או רכיבים אינטראקטיביים, או מצב שבו הרכיבים האלה חופפים לתנועות המובנות במערכת, צריך לטפל ב-inset.
ההגדרות האלה מתארות חלקים במסך שחופפים לממשק המשתמש של המערכת או לתנועות המובנות במערכת. אלה סוגי ה-inset העיקריים שצריך להביא בחשבון כשמציגים תוכן מקצה לקצה:
- הוספת סרגלי מידע: מייצגת אזורים שבהם מוצגים סרגלי מידע. כדאי להשתמש בהם כדי למנוע מצב שבו סרגלי המידע מסתירים את ממשק המשתמש.
- מרווחים פנימיים של מגרעת במסך: מייצגים אזורים שבהם יש מגרעת פיזית (כמו מגרעת למצלמה) במסך המכשיר.
ב-Compose, אפשר לטפל ב-inset באמצעות סרגלים, מגדירי ריפוד או מגדירי גודל של inset. הנחיות מפורטות זמינות במאמר מידע על הוספת חלונות.
נושאים מתקדמים
כדאי להביא בחשבון את הדברים הבאים בתרחישים מתקדמים יותר של פריסה מקצה לקצה.
מצב עשיר
בתוכן מסוים, כמו סרטונים או מפות, כדאי להשתמש בחוויה עשירה שבה סרגלי המידע מוסתרים. אפשר להסתיר את סרגלי המידע באמצעות WindowInsetsControllerCompat:
val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView) // Hide the system bars. windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) // Show the system bars. windowInsetsController.show(WindowInsetsCompat.Type.systemBars())
צבעים וסמלים של סרגל המידע
כשמגדירים את האפליקציה לתצוגה מקצה לקצה, יכול להיות שהרקע של האפליקציה יוצג מאחורי סרגלי המידע. במקרה כזה, אולי תצטרכו לשנות את הצבעים של הסמלים בסרגלי המידע כדי לשפר את הניגודיות.
כדי לשנות את הסמלים בשורת הסטטוס לבהירים או לכהים, משתמשים ב-WindowInsetsControllerCompat:
// Set status bar icons to dark. WindowCompat.getInsetsController(window, window.decorView) .isAppearanceLightStatusBars = true // Set status bar icons to light. WindowCompat.getInsetsController(window, window.decorView) .isAppearanceLightStatusBars = false
הגנה על סרגל המידע
ב-enableEdgeToEdge() יש סרגלי מידע שקופים או שקופים למחצה כברירת מחדל, אבל יכול להיות שתצטרכו להתאים אותם אישית. כדי להחליט מתי להשתמש בסרגלים שקופים או שקופים למחצה, כדאי לעיין בהנחיות לעיצוב סרגלי המידע ב-Android ובהנחיות לעיצוב מקצה לקצה.
כדי שסרגל הניווט עם 3 הלחצנים יהיה שקוף לגמרי במקום שקוף למחצה, אתם יכולים להשבית את אכיפת הניגודיות:
window.isNavigationBarContrastEnforced = false
מידע נוסף זמין במאמר מידע על הגנה על סרגל המידע.