Menyiapkan tampilan tepi ke tepi secara manual

Anda dapat mengaktifkan layar penuh di aplikasi dengan memanggil enableEdgeToEdge. Hal ini sudah cukup untuk sebagian besar aplikasi. Panduan ini menjelaskan cara mengaktifkan tampilan layar penuh jika aplikasi Anda perlu melakukannya tanpa menggunakan enableEdgeToEdge.

Menata aplikasi Anda dalam layar penuh

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

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 kolom sistem

Saat beroperasi dalam tata letak layar penuh, aplikasi Anda perlu mengubah warna kolom sistem agar konten di bawahnya terlihat. Setelah aplikasi Anda melakukan langkah ini, sistem akan menangani semua perlindungan visual antarmuka pengguna dalam mode navigasi gestur dan dalam mode tombol.

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

Anda dapat mengedit file themes.xml untuk menyetel warna menu navigasi dan, secara opsional, menyetel status bar menjadi transparan dan warna konten status bar menjadi 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 WindowInsetsController API secara langsung, tetapi sebaiknya gunakan Support Library WindowInsetsControllerCompat jika memungkinkan. Anda dapat menggunakan WindowInsetsControllerCompat API, bukan theme.xml untuk mengontrol warna konten status bar. Untuk melakukannya, gunakan fungsi setAppearanceLightNavigationBars(), dengan 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);