راه‌اندازی لبه‌به‌لبه

نمایشگر لبه‌به‌لبه به برنامه شما اجازه می‌دهد میانای کاربری خود را در پشت نوارهای سیستم (نوار وضعیت، نوار عنوان، و نوار پیمایش) رسم کند تا تجربه کاربری فراگیرتری ایجاد شود. اگر دستگاه‌های دارای Android 15 (سطح میانای برنامه‌سازی کاربردی ۳۵) یا بالاتر را هدف‌یابی می‌کنید، لبه‌به‌لبه به‌طور پیش‌فرض اعمال می‌شود.

برای نمایش صحیح محتوا به‌صورت لبه‌به‌لبه در همه نسخه‌های Android، این مراحل راه‌اندازی را دنبال کنید. بدون این مراحل، ممکن است برنامه‌تان رنگ‌های یک‌دست را پشت نوارهای سیستم رسم کند یا محتوایش را به‌طور هم‌زمان با انتقال‌های صفحه‌کلید مجازی (IME) پویانمایی نکند.

۱. فعال کردن نمایش لبه‌به‌لبه

برای فعال کردن حالت لبه‌به‌لبه در نسخه‌های قبلی Android، enableEdgeToEdge() را در روش Activity.onCreate() فراخوانی کنید:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    // ...
}

به‌طور پیش‌فرض، enableEdgeToEdge() نوارهای سیستم را شفاف می‌کند، به‌جز در حالت پیمایش ۳دکمه‌ای که در آن برای کنتراست بهتر، یک پرده نیمه‌شفاف روی نوار پیمایش اعمال می‌کند. رنگ نمادهای سیستم و پرده با زمینه روشن یا تیره سیستم سازگار می‌شود.

۲. پیکربندی 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>

۳. مدیریت هم‌پوشانی‌ها بااستفاده از حاشیه‌ها

وقتی حالت لب‌به‌لب فعال شود، ممکن است برخی‌از محتوا و عناصر میانای کاربر برنامه‌تان در پشت نوارهای سیستم رسم شود. برای جلوگیری از پنهان شدن عناصر مهم یا تعاملی توسط نوارهای سیستم یا هم‌پوشانی آن‌ها با اشاره‌های سیستم، باید تورفتگی‌ها را مدیریت کنید.

درج‌ها بخش‌هایی از صفحه را توصیف می‌کنند که با میانای کاربر سیستم یا اشاره‌های سیستم تلاقی دارند. انواع اصلی تورفتگی‌هایی که باید برای نمایشگر لب‌به‌لب درنظر گرفت عبارت‌اند از:

  • درج‌های نوار سیستم: مناطقی را که نوارهای سیستم نمایش داده می‌شوند نشان می‌دهد. از این‌ها استفاده کنید تا میانای کاربر توسط نوارهای سیستم پوشانده نشود.
  • درج‌های برش نمایشگر: نشان‌دهنده مناطقی است که برش فیزیکی (مانند شکاف دوربین) در صفحه دستگاه وجود دارد.

در Compose، می‌توانید بااستفاده از خط‌کش‌ها، اصلاح‌کننده‌های حاشیه داخلی، یا اصلاح‌کننده‌های اندازه درج، درج‌ها را مدیریت کنید. برای راهنمایی دقیق، به درباره درج‌های پنجره مراجعه کنید.

موضوعات پیشرفته

برای موارد استفاده پیشرفته‌تر از لبه به لبه، موارد زیر را درنظر بگیرید.

حالت فراگیر

برخی‌از محتواها، مثل ویدیوها یا نقشه‌ها، از تجربه کاملاً فراگیر بهره می‌برند که در آن نوارهای سیستم پنهان هستند. می‌توانید نوارهای سیستم را بااستفاده از 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 و راهنمای طراحی لب‌به‌لب مراجعه کنید.

برای اینکه نوار پیمایش ۳دکمه‌ای به‌جای نیمه‌شفاف، کاملاً شفاف شود، می‌توانید اعمال کنتراست را غیرفعال کنید:

window.isNavigationBarContrastEnforced = false

برای اطلاعات بیشتر، به درباره محافظت از نوار سیستم مراجعه کنید.