אחרי שהאפליקציה שלכם מטרגטת ל-SDK 35 ואילך, הצגה מקצה לקצה נאכפת. סרגל הסטטוס של המערכת וסרגלי הניווט באמצעות תנועות הם שקופים, אבל סרגל הניווט עם שלושת הלחצנים הוא שקוף למחצה. צריך לקרוא ל-enableEdgeToEdge
כדי להפוך את הקוד הזה לתואם לאחור.
עם זאת, יכול להיות שברירת המחדל של המערכת לא תפעל בכל תרחישי השימוש. במאמרים הנחיות לעיצוב של סרגי המערכת ב-Android והנחיות לעיצוב מקצה לקצה מפורט מתי כדאי להשתמש בסרגי מערכת שקופים או שקופים למחצה.
יצירת שורות מערכת שקופות
כדי ליצור סרגל ניווט שקוף לתנועות, מטרגטים את Android מגרסה 15 ואילך, או שקוראים ל-enableEdgeToEdge()
עם ארגומנטים שמוגדרים כברירת מחדל לגרסאות קודמות. בסרגל הניווט עם שלושה לחצנים, מגדירים את Window.setNavigationBarContrastEnforced
לערך false
. אחרת, יופיע מסך שקוף.
יצירת שורות מערכת שקופות
כדי ליצור שורת סטטוס שקופה, יוצרים רכיב מורכב בהתאמה אישית שמכסה את התוכן הראשי ומצייר שיפוע באזור שמכוסה על ידי הרכיבים הפנימיים.
class SystemBarProtectionSnippets : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // enableEdgeToEdge sets window.isNavigationBarContrastEnforced = true // which is used to add a translucent scrim to three-button navigation enableEdgeToEdge() setContent { MyTheme { // Main content MyContent() // After drawing main content, draw status bar protection StatusBarProtection() } } } } @Composable private fun StatusBarProtection( color: Color = MaterialTheme.colorScheme.surfaceContainer, heightProvider: () -> Float = calculateGradientHeight(), ) { Canvas(Modifier.fillMaxSize()) { val calculatedHeight = heightProvider() val gradient = Brush.verticalGradient( colors = listOf( color.copy(alpha = 1f), color.copy(alpha = .8f), Color.Transparent ), startY = 0f, endY = calculatedHeight ) drawRect( brush = gradient, size = Size(size.width, calculatedHeight), ) } } @Composable fun calculateGradientHeight(): () -> Float { val statusBars = WindowInsets.statusBars val density = LocalDensity.current return { statusBars.getTop(density).times(1.2f) } }
באפליקציות מותאמות, מוסיפים רכיב מותאם אישית שתואם לצבעים של כל חלונית, כפי שמוצג בעיצוב מקצה לקצה. כדי ליצור סרגל ניווט שקוף, מגדירים את הערך של Window.setNavigationBarContrastEnforced
כ-true.