ซ่อนแถบนำทาง
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
บทเรียนนี้จะอธิบายวิธีซ่อนแถบนำทาง ซึ่งได้แนะนำไว้ใน
Android 4.0 (API ระดับ 14)
แม้ว่าบทเรียนนี้จะมุ่งเน้นที่การซ่อน
คุณควรออกแบบแอปให้ซ่อนแถบสถานะ
พร้อมกันตามที่อธิบายไว้ในการซ่อนแถบสถานะ
การซ่อนการนำทางและแถบสถานะ (ขณะยังคงทำให้เข้าถึงได้ง่าย)
ให้เนื้อหาใช้พื้นที่แสดงผลทั้งหมดได้
จึงเป็นการเพิ่มความสมจริง
ประสบการณ์ของผู้ใช้
รูปที่ 1 แถบนำทาง
ซ่อนแถบนำทาง
คุณสามารถซ่อนแถบนำทางได้โดยใช้
แฟล็ก SYSTEM_UI_FLAG_HIDE_NAVIGATION
ข้อมูลโค้ดนี้จะซ่อนทั้ง 2 แบบ
แถบนำทางและแถบสถานะ
Kotlin
window.decorView.apply {
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
}
Java
View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
ข้อควรทราบ
- วิธีนี้จะแตะที่ใดก็ได้บนหน้าจอจะทำให้แถบนำทาง (และ
แถบสถานะ) ให้แสดงขึ้นอีกครั้งและยังคงมองเห็นได้อยู่ การโต้ตอบของผู้ใช้จะทำให้เกิดการรายงาน
สามารถล้างได้
- เมื่อล้างการแจ้งว่าไม่เหมาะสมแล้ว แอปของคุณจำเป็นต้องรีเซ็ตการตั้งค่าเหล่านี้หากคุณ
ต้องการซ่อนแถบดังกล่าวอีกครั้ง โปรดดูการตอบกลับการเปลี่ยนแปลงระดับการเข้าถึง UI สำหรับ
อภิปรายเกี่ยวกับวิธีการเปลี่ยนแปลงการแสดง UI เพื่อให้แอปของคุณสามารถ
ตอบกลับ
- ตำแหน่งที่คุณตั้งค่าสถานะ UI จะทำให้เกิดความแตกต่าง หากคุณซ่อนแถบระบบในส่วน
เมธอด
onCreate()
และผู้ใช้กด "หน้าแรก" แถบของระบบจะ
ปรากฏขึ้นอีกครั้ง เมื่อผู้ใช้เปิดกิจกรรมอีกครั้ง onCreate()
จะไม่ถูกเรียก ดังนั้นแถบของระบบจะยังคงปรากฏ ถ้าต้องการให้เปลี่ยน UI ของระบบเป็น
ยังคงอยู่เมื่อผู้ใช้เข้าและออกจากกิจกรรมของคุณ ให้ตั้งค่าสถานะ UI ใน
onResume()
หรือ onWindowFocusChanged()
- เมธอด
setSystemUiVisibility()
เท่านั้น
จะมีผลหากมุมมองที่คุณเรียกใช้มุมมองนั้นปรากฏให้เห็น
- การออกจากหน้ามุมมองจะทำให้เกิดการแจ้งว่าไม่เหมาะสม
ตั้งค่าด้วย
setSystemUiVisibility()
ที่จะล้าง
ทำให้เนื้อหาปรากฏด้านหลังแถบนำทาง
ใน Android 4.1 ขึ้นไป คุณสามารถตั้งค่าเนื้อหาแอปพลิเคชันให้ปรากฏด้านหลัง
เพื่อไม่ให้เนื้อหาปรับขนาดเมื่อแถบนำทางซ่อน
รายการ โดยใช้
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
นอกจากนี้ คุณยังอาจต้องใช้
SYSTEM_UI_FLAG_LAYOUT_STABLE
เพื่อช่วยให้แอปของคุณรักษา
ที่เสถียรแล้ว
เมื่อคุณใช้วิธีนี้ นั่นเป็นความรับผิดชอบของคุณที่จะต้องตรวจสอบว่าส่วนสำคัญ
ท้ายที่สุดแล้ว UI ของแอปไม่โดนแถบของระบบบดบัง สำหรับข้อมูลเพิ่มเติม
การสนทนาเกี่ยวกับหัวข้อนี้ โปรดดู
การซ่อนบทเรียนแถบสถานะ
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Hide the navigation bar\n\nThis lesson describes how to hide the navigation bar, which was introduced in\nAndroid 4.0 (API level 14).\n\nEven though this lesson focuses on hiding the\nnavigation bar, you should design your app to hide the status bar\nat the same time, as described in [Hiding the Status Bar](/training/system-ui/status).\nHiding the navigation and status bars (while still keeping them readily accessible)\nlets the content use the entire display space, thereby providing a more immersive\nuser experience.\n\n**Figure 1.** Navigation bar.\n\nHide the Navigation Bar\n-----------------------\n\nYou can hide the navigation bar using the\n[SYSTEM_UI_FLAG_HIDE_NAVIGATION](/reference/android/view/View#SYSTEM_UI_FLAG_HIDE_NAVIGATION) flag. This snippet hides both\nthe navigation bar and the status bar: \n\n### Kotlin\n\n```kotlin\nwindow.decorView.apply {\n // Hide both the navigation bar and the status bar.\n // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as\n // a general rule, you should design your app to hide the status bar whenever you\n // hide the navigation bar.\n systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN\n}\n```\n\n### Java\n\n```java\nView decorView = getWindow().getDecorView();\n// Hide both the navigation bar and the status bar.\n// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as\n// a general rule, you should design your app to hide the status bar whenever you\n// hide the navigation bar.\nint uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION\n | View.SYSTEM_UI_FLAG_FULLSCREEN;\ndecorView.setSystemUiVisibility(uiOptions);\n```\n\nNote the following:\n\n- With this approach, touching anywhere on the screen causes the navigation bar (and status bar) to reappear and remain visible. The user interaction causes the flags to be be cleared.\n- Once the flags have been cleared, your app needs to reset them if you want to hide the bars again. See [Responding to UI Visibility Changes](/training/system-ui/visibility) for a discussion of how to listen for UI visibility changes so that your app can respond accordingly.\n- Where you set the UI flags makes a difference. If you hide the system bars in your activity's [onCreate()](/reference/android/app/Activity#onCreate(android.os.Bundle)) method and the user presses Home, the system bars will reappear. When the user reopens the activity, [onCreate()](/reference/android/app/Activity#onCreate(android.os.Bundle)) won't get called, so the system bars will remain visible. If you want system UI changes to persist as the user navigates in and out of your activity, set UI flags in [onResume()](/reference/android/app/Activity#onResume()) or [onWindowFocusChanged()](/reference/android/view/Window.Callback#onWindowFocusChanged(boolean)).\n- The method [setSystemUiVisibility()](/reference/android/view/View#setSystemUiVisibility(int)) only has an effect if the view you call it from is visible.\n- Navigating away from the view causes flags set with [setSystemUiVisibility()](/reference/android/view/View#setSystemUiVisibility(int)) to be cleared.\n\nMake Content Appear Behind the Navigation Bar\n---------------------------------------------\n\nOn Android 4.1 and higher, you can set your application's content to appear behind\nthe navigation bar, so that the content doesn't resize as the navigation bar hides and\nshows. To do this, use\n[SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION](/reference/android/view/View#SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION).\nYou may also need to use\n[SYSTEM_UI_FLAG_LAYOUT_STABLE](/reference/android/view/View#SYSTEM_UI_FLAG_LAYOUT_STABLE) to help your app maintain a\nstable layout.\n\nWhen you use this approach, it becomes your responsibility to ensure that critical parts\nof your app's UI don't end up getting covered by system bars. For more\ndiscussion of this topic, see the [Hiding the Status Bar](/training/system-ui/status#behind) lesson."]]