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

وقتی برنامه‌تان کیت توسعه نرم‌افزار ۳۵ یا جدیدتر را هدف‌یابی کند، نمایش لبه‌به‌لبه اجباری می‌شود. نوار وضعیت سیستم و نوارهای پیمایش اشاره‌ای شفاف هستند، اما نوار پیمایش سه‌دکمه‌ای نیمه‌شفاف است. برای سازگار کردن این مورد با نسخه‌های قدیمی، با 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 تنظیم کنید.