درباره محافظت از نوار سیستم

وقتی برنامه‌تان «کیت توسعه نرم‌افزار» ۳۵ یا جدیدتر را هدف‌یابی کند، لبه‌به‌لبه اعمال می‌شود. نوار وضعیت سیستم و نوارهای پیمایش اشاره‌ای شفاف هستند، اما نوار پیمایش سه‌دکمه‌ای نیمه‌شفاف است. برای سازگار کردن این با نسخه‌های قدیمی، با 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,
) {
    Spacer(
        modifier = Modifier
            .fillMaxWidth()
            .height(
                with(LocalDensity.current) {
                    (WindowInsets.statusBars.getTop(this) * 1.2f).toDp()
                }
            )
            .background(
                brush = Brush.verticalGradient(
                    colors = listOf(
                        color.copy(alpha = 1f),
                        color.copy(alpha = 0.8f),
                        Color.Transparent
                    )
                )
            )
    )
}

شکل ۱. نوار وضعیت نیمه‌شفاف.

برای برنامه‌های تطبیقی، عنصر ترکیبی سفارشی‌ای را که با رنگ‌های هر قاب مطابقت دارد درج کنید، همان‌طور که در طراحی لبه‌به‌لبه دیده می‌شود. برای ایجاد نوار پیمایش نیمه‌شفاف، Window.setNavigationBarContrastEnforced را روی true تنظیم کنید.