הסתרת סרגל הניווט

בשיעור הזה נסביר איך להסתיר את סרגל הניווט, שהיה חדש ב- Android 4.0 (רמת API 14).

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

פסי מערכת

איור 1. סרגל ניווט.

הסתרת סרגל הניווט

אפשר להסתיר את סרגל הניווט באמצעות סימון SYSTEM_UI_FLAG_HIDE_NAVIGATION. קטע הקוד הזה מסתיר את שני המקורות את סרגל הניווט ושורת הסטטוס:

Kotlin

window.decorView.apply {
    // Hide both the navigation bar and the status bar.
    // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
    // a general rule, you should design your app to hide the status bar whenever you
    // hide the navigation bar.
    systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
}

Java

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

שימו לב:

  • בגישה זו, נגיעה בכל מקום במסך גורמת לסרגל הניווט כדי להופיע שוב ולהישאר גלויים. האינטראקציה של המשתמש גורמת לסימון צריך להיות מבוטל.
  • לאחר ניקוי הדגלים, האפליקציה תצטרך לאפס אותם אם אני רוצה להסתיר שוב את העמודות. במאמר תגובה לשינויים בחשיפה של ממשק המשתמש אפשר לקרוא דיון לגבי האופן שבו ניתן להאזין לשינויים בחשיפה של ממשק המשתמש, כדי שהאפליקציה תוכל מגיבים בהתאם.
  • יש הבדל בין הדגלים שבהם מגדירים את התכונות הניסיוניות בממשק המשתמש. אם הסתרת את סרגלי המערכת בקטע של הפעילות בשיטת onCreate() והמשתמש לוחץ על 'דף הבית', סרגלי המערכת להופיע שוב. כשהמשתמש פותח מחדש את הפעילות, onCreate() לא תתבצע קריאה, כך שעמודות המערכת יישארו גלויות. אם רוצים לבצע שינויים בממשק המשתמש של המערכת להמשיך כשהמשתמש מנווט לפעילות שלך ויוצא ממנה, להגדיר סימונים בממשק המשתמש onResume() או onWindowFocusChanged().
  • רק השיטה setSystemUiVisibility() תהיה השפעה אם התצוגה שממנה התקשרת אליה גלויה.
  • יציאה מהתצוגה תגרום לסימונים מוגדר עם setSystemUiVisibility() .

הצגת התוכן מאחורי סרגל הניווט

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

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