บทเรียนนี้จะอธิบายวิธีซ่อนแถบนำทาง ซึ่งได้แนะนำไว้ใน Android 4.0 (API ระดับ 14)
แม้ว่าบทเรียนนี้จะมุ่งเน้นที่การซ่อน คุณควรออกแบบแอปให้ซ่อนแถบสถานะ พร้อมกันตามที่อธิบายไว้ในการซ่อนแถบสถานะ การซ่อนการนำทางและแถบสถานะ (ขณะยังคงทำให้เข้าถึงได้ง่าย) ให้เนื้อหาใช้พื้นที่แสดงผลทั้งหมดได้ จึงเป็นการเพิ่มความสมจริง ประสบการณ์ของผู้ใช้
ซ่อนแถบนำทาง
คุณสามารถซ่อนแถบนำทางได้โดยใช้
แฟล็ก 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 ของแอปไม่โดนแถบของระบบบดบัง สำหรับข้อมูลเพิ่มเติม การสนทนาเกี่ยวกับหัวข้อนี้ โปรดดู การซ่อนบทเรียนแถบสถานะ