Menyiapkan tampilan tepi ke tepi secara manual

Anda dapat mengaktifkan tampilan tepi-ke-tepi di aplikasi dengan memanggil enableEdgeToEdge Ini seharusnya cukup untuk sebagian besar aplikasi. Panduan ini menjelaskan cara mengaktifkan layar penuh jika aplikasi Anda perlu melakukannya tanpa menggunakan enableEdgeToEdge.

Menempatkan aplikasi dalam layar penuh

Gunakan WindowCompat.setDecorFitsSystemWindows(window, false) untuk meletakkan aplikasi Anda di belakang kolom sistem, seperti yang ditunjukkan pada kode berikut contoh:

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);
}

Mengubah warna bilah sistem

Saat beroperasi dengan tata letak tepi-ke-tepi, aplikasi Anda harus mengubah warna bilah sistem agar konten di bawahnya terlihat. Setelah aplikasi Anda melakukan langkah ini, sistem menangani semua perlindungan visual pengguna dalam mode navigasi gestur dan dalam mode tombol.

  • Mode navigasi gestur: sistem menerapkan adaptasi warna dinamis dalam di mana isi bilah sistem berubah warna berdasarkan konten di belakangnya mereka. Dalam contoh berikut, handle di menu navigasi berubah menjadi warna gelap saat berada di atas konten terang dan menjadi warna terang jika berada di atas konten gelap.
Gambar 1. Perubahan warna dalam navigasi gestur mode.
  • Mode tombol: sistem menerapkan efek scrim di belakang kolom sistem (untuk API level 29 atau yang lebih baru) atau sistem transparan (untuk level API 28 atau yang lebih lama).
Gambar yang menunjukkan kolom sistem transparan
Gambar 2. Scrim transparan di belakang kolom sistem.
  • Warna konten status bar: mengontrol warna konten status bar, seperti seperti waktu dan ikon.
Gambar yang ditampilkan di warna konten status bar
Gambar 3. Warna konten status bar.

Anda dapat mengedit file themes.xml untuk menetapkan warna menu navigasi dan, secara opsional, untuk mengatur {i>status bar<i} sebagai transparan dan warna konten {i>status bar<i} sebagai gelap.

<!-- 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>

Anda dapat menggunakan API WindowInsetsController secara langsung, tetapi kami sangat menyarankan Anda untuk menggunakan Library Dukungan WindowInsetsControllerCompat jika memungkinkan. Anda dapat menggunakan WindowInsetsControllerCompat API daripada theme.xml untuk mengontrol warna konten status bar. Untuk melakukannya, gunakan setAppearanceLightNavigationBars() fungsi, meneruskan true untuk mengubah warna latar depan navigasi menjadi warna terang atau false untuk kembali ke warna default.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

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

windowInsetsController.setAppearanceLightNavigationBars(true);