Menyembunyikan kolom sistem untuk mode imersif
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Beberapa konten paling nyaman dinikmati dalam layar penuh tanpa indikator apa pun di status bar atau menu navigasi. Beberapa contohnya adalah video, game, galeri gambar, buku, dan slide presentasi. Hal ini disebut sebagai
mode imersif. Halaman ini menunjukkan cara melibatkan pengguna lebih mendalam dengan konten dalam layar penuh.
Gambar 1. Contoh mode imersif.
Mode imersif membantu pengguna menghindari keluar dari game secara tidak sengaja dan memberikan pengalaman imersif untuk menikmati gambar, video, dan buku.
Namun, perhatikan frekuensi pengguna masuk dan keluar aplikasi untuk memeriksa notifikasi,
melakukan penelusuran dadakan, atau melakukan tindakan lain. Karena mode imersif menyebabkan pengguna kehilangan akses mudah ke navigasi sistem, gunakan mode imersif hanya jika manfaatnya bagi pengalaman pengguna lebih dari sekadar menggunakan ruang layar tambahan.
Gunakan WindowInsetsControllerCompat.hide()
untuk menyembunyikan bilah sistem dan WindowInsetsControllerCompat.show()
untuk menampilkannya kembali.
Cuplikan berikut menunjukkan contoh konfigurasi tombol untuk menyembunyikan dan menampilkan
status bar sistem.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) {
...
val windowInsetsController =
WindowCompat.getInsetsController(window, window.decorView)
// Configure the behavior of the hidden system bars.
windowInsetsController.systemBarsBehavior =
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
// Add a listener to update the behavior of the toggle fullscreen button when
// the system bars are hidden or revealed.
ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { view, windowInsets ->
// You can hide the caption bar even when the other system bars are visible.
// To account for this, explicitly check the visibility of navigationBars()
// and statusBars() rather than checking the visibility of systemBars().
if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars())
|| windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) {
binding.toggleFullscreenButton.setOnClickListener {
// Hide both the status bar and the navigation bar.
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())
}
} else {
binding.toggleFullscreenButton.setOnClickListener {
// Show both the status bar and the navigation bar.
windowInsetsController.show(WindowInsetsCompat.Type.systemBars())
}
}
ViewCompat.onApplyWindowInsets(view, windowInsets)
}
}
Java
@Override
protected void onCreate(Bundle savedInstanceState) {
...
WindowInsetsControllerCompat windowInsetsController =
WindowCompat.getInsetsController(getWindow(), getWindow().getDecorView());
// Configure the behavior of the hidden system bars.
windowInsetsController.setSystemBarsBehavior(
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
);
// Add a listener to update the behavior of the toggle fullscreen button when
// the system bars are hidden or revealed.
ViewCompat.setOnApplyWindowInsetsListener(
getWindow().getDecorView(),
(view, windowInsets) -> {
// You can hide the caption bar even when the other system bars are visible.
// To account for this, explicitly check the visibility of navigationBars()
// and statusBars() rather than checking the visibility of systemBars().
if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars())
|| windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) {
binding.toggleFullscreenButton.setOnClickListener(v -> {
// Hide both the status bar and the navigation bar.
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars());
});
} else {
binding.toggleFullscreenButton.setOnClickListener(v -> {
// Show both the status bar and the navigation bar.
windowInsetsController.show(WindowInsetsCompat.Type.systemBars());
});
}
return ViewCompat.onApplyWindowInsets(view, windowInsets);
});
}
Secara opsional, Anda dapat menentukan jenis kolom sistem yang akan disembunyikan dan menentukan
perilakunya saat pengguna berinteraksi dengannya.
Menentukan kolom sistem yang akan disembunyikan
Untuk menentukan jenis kolom sistem yang akan disembunyikan, teruskan salah satu parameter berikut
ke WindowInsetsControllerCompat.hide()
.
Menentukan perilaku kolom sistem tersembunyi
Gunakan WindowInsetsControllerCompat.setSystemBarsBehavior()
untuk menentukan perilaku kolom sistem tersembunyi saat pengguna berinteraksi dengannya.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-08-27 UTC.
[null,null,["Terakhir diperbarui pada 2025-08-27 UTC."],[],[],null,["Some content is best experienced in fullscreen without any indicators on the\nstatus bar or the navigation bar. Some examples are videos, games, image\ngalleries, books, and presentation slides. This is referred to as\n*immersive mode*. This page shows how you can engage users more deeply with\ncontent in fullscreen. \n**Figure 1.** Example of immersive mode.\n\nImmersive mode helps users avoid accidental exits during a game and\ndelivers an immersive experience for enjoying images, videos, and books.\nHowever, be mindful of how often users jump in and out of apps to check notifications,\nto conduct impromptu searches, or to take other actions. Because immersive mode\ncauses users to lose easy access to system navigation, use immersive mode only\nwhen the benefit to the user experience goes beyond simply using extra screen\nspace.\n\nUse [`WindowInsetsControllerCompat.hide()`](/reference/androidx/core/view/WindowInsetsControllerCompat#hide(int))\nto hide the system bars and [`WindowInsetsControllerCompat.show()`](/reference/androidx/core/view/WindowInsetsControllerCompat#show(int))\nto bring them back.\n\nThe following snippet shows an example of configuring a button to hide and show\nthe system bars. \n\nKotlin \n\n```kotlin\noverride fun onCreate(savedInstanceState: Bundle?) {\n ...\n\n val windowInsetsController =\n WindowCompat.getInsetsController(window, window.decorView)\n // Configure the behavior of the hidden system bars.\n windowInsetsController.systemBarsBehavior =\n WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE\n\n // Add a listener to update the behavior of the toggle fullscreen button when\n // the system bars are hidden or revealed.\n ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { view, windowInsets -\u003e\n // You can hide the caption bar even when the other system bars are visible.\n // To account for this, explicitly check the visibility of navigationBars()\n // and statusBars() rather than checking the visibility of systemBars().\n if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars())\n || windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) {\n binding.toggleFullscreenButton.setOnClickListener {\n // Hide both the status bar and the navigation bar.\n windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())\n }\n } else {\n binding.toggleFullscreenButton.setOnClickListener {\n // Show both the status bar and the navigation bar.\n windowInsetsController.show(WindowInsetsCompat.Type.systemBars())\n }\n }\n ViewCompat.onApplyWindowInsets(view, windowInsets)\n }\n}\n```\n\nJava \n\n```java\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n ...\n\n WindowInsetsControllerCompat windowInsetsController =\n WindowCompat.getInsetsController(getWindow(), getWindow().getDecorView());\n // Configure the behavior of the hidden system bars.\n windowInsetsController.setSystemBarsBehavior(\n WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE\n );\n\n // Add a listener to update the behavior of the toggle fullscreen button when\n // the system bars are hidden or revealed.\n ViewCompat.setOnApplyWindowInsetsListener(\n getWindow().getDecorView(),\n (view, windowInsets) -\u003e {\n // You can hide the caption bar even when the other system bars are visible.\n // To account for this, explicitly check the visibility of navigationBars()\n // and statusBars() rather than checking the visibility of systemBars().\n if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars())\n || windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) {\n binding.toggleFullscreenButton.setOnClickListener(v -\u003e {\n // Hide both the status bar and the navigation bar.\n windowInsetsController.hide(WindowInsetsCompat.Type.systemBars());\n });\n } else {\n binding.toggleFullscreenButton.setOnClickListener(v -\u003e {\n // Show both the status bar and the navigation bar.\n windowInsetsController.show(WindowInsetsCompat.Type.systemBars());\n });\n }\n return ViewCompat.onApplyWindowInsets(view, windowInsets);\n });\n}\n```\n\nOptionally, you can specify the type of system bars to hide and determine\ntheir behavior when a user interacts with them.\n\nSpecify which system bars to hide\n\nTo specify the type of system bars to hide, pass one of the following parameters\nto `WindowInsetsControllerCompat.hide()`.\n\n- Use [`WindowInsetsCompat.Type.systemBars()`](/reference/kotlin/androidx/core/view/WindowInsetsCompat.Type#systembars) to\n hide both system bars.\n\n- Use [`WindowInsetsCompat.Type.statusBars()`](/reference/kotlin/androidx/core/view/WindowInsetsCompat.Type#statusbars) to\n hide only the status bar.\n\n- Use [`WindowInsetsCompat.Type.navigationBars()`](/reference/kotlin/androidx/core/view/WindowInsetsCompat.Type#navigationbars) to\n hide only the navigation bar.\n\nSpecify behavior of hidden system bars\n\nUse [`WindowInsetsControllerCompat.setSystemBarsBehavior()`](/reference/androidx/core/view/WindowInsetsControllerCompat#setSystemBarsBehavior(int))\nto specify how hidden system bars behave when the user interacts with them.\n\n- Use [`WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH`](/reference/androidx/core/view/WindowInsetsControllerCompat#BEHAVIOR_SHOW_BARS_BY_TOUCH())\n to reveal hidden system bars on *any* user interactions on the corresponding\n display.\n\n- Use [`WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE`](/reference/androidx/core/view/WindowInsetsControllerCompat#BEHAVIOR_SHOW_BARS_BY_SWIPE())\n to reveal hidden system bars on any system gestures, such as swiping from\n the edge of the screen where the bar is hidden from.\n\n- Use [`WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE`](/reference/androidx/core/view/WindowInsetsControllerCompat#BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE())\n to temporarily reveal hidden system bars with system gestures, such as\n swiping from the edge of the screen where the bar is hidden from. These\n transient system bars overlay your app's content, might have some degree of\n transparency, and are automatically hidden after a short timeout."]]