الإعداد اليدوي للشاشة الممتدة من الحافة إلى الحافة

يمكنك تفعيل الشاشة الشاملة في تطبيقك عن طريق طلب الرمز enableEdgeToEdge. ومن المفترض أن يكون هذا كافيًا لمعظم التطبيقات. يوضِّح هذا الدليل طريقة تقديم تجربة شاملة إذا كان تطبيقك يحتاج إلى تنفيذ ذلك بدون استخدام enableEdgeToEdge.

عرض تطبيقك في وضع ملء الشاشة

استخدِم WindowCompat.setDecorFitsSystemWindows(window, false) لتخطيط تطبيقك خلف أشرطة النظام، كما هو موضّح في مثال الرمز البرمجي التالي:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  WindowCompat.setDecorFitsSystemWindows(window, false)
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
}

تغيير لون أشرطة النظام

عند التشغيل بتنسيق شامل، يحتاج تطبيقك إلى تغيير ألوان أشرطة النظام للسماح للمحتوى الموجود أسفله بالظهور. بعد أن ينفِّذ تطبيقك هذه الخطوة، سيعالج النظام كل الحماية المرئية لواجهة المستخدم في وضع التنقّل بالإيماءات وفي وضع الأزرار.

  • وضع التنقل بالإيماءات: يطبّق النظام تعديل الألوان الديناميكي، حيث يتغيّر لون محتوى أشرطة النظام بناءً على المحتوى الموجود خلفها. في المثال التالي، يتغير المقبض في شريط التنقل إلى لون داكن عندما يكون أعلى المحتوى الفاتح وإلى لون فاتح عندما يكون فوق المحتوى الداكن.
الشكل 1. تغييرات الألوان في وضع التنقّل بالإيماءات
  • وضع الزر: يطبِّق النظام إطارًا شفافًا خلف أشرطة النظام (بالنسبة إلى المستوى 29 من واجهة برمجة التطبيقات أو المستويات الأحدث) أو شريط نظام شفاف (مع المستوى 28 من واجهة برمجة التطبيقات أو المستوى الأقدم).
صورة تعرض أشرطة نظام شفافة
الشكل 2. حاجب شفاف خلف أشرطة النظام.
  • لون محتوى شريط الحالة: للتحكم في لون محتوى شريط الحالة، مثل الوقت والرموز.
صورة تعرض لون محتوى شريط الحالة
الشكل 3. لون محتوى شريط الحالة

يمكنك تعديل ملف themes.xml لضبط لون شريط التنقل، واختياريًا ضبط شريط الحالة على شفاف ولون محتوى شريط الحالة كاللون الداكن.

<!-- values-v29/themes.xml -->
<style name="Theme.MyApp">
  <item name="android:navigationBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set to transparent if your app is drawing behind the status bar. -->
  <item name="android:statusBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set for a light status bar with dark content. -->
  <item name="android:windowLightStatusBar">
    true
  </item>
</style>

يمكنك استخدام واجهة برمجة تطبيقات WindowInsetsController مباشرةً، ولكن ننصحك بشدة باستخدام مكتبة الدعم WindowInsetsControllerCompat حيثما أمكن. يمكنك استخدام واجهة برمجة التطبيقات WindowInsetsControllerCompat بدلاً من theme.xml للتحكّم في لون محتوى شريط الحالة. لإجراء ذلك، استخدِم الدالة setAppearanceLightNavigationBars() من خلال إدخال true لتغيير لون المقدّمة في التنقّل إلى لون فاتح أو false للرجوع إلى اللون التلقائي.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

WindowInsetsControllerCompat windowInsetsController =
      ViewCompat.getWindowInsetsController(getWindow().getDecorView());
if (windowInsetsController == null) {
    return;
}

windowInsetsController.setAppearanceLightNavigationBars(true);