ซ่อนแถบนำทาง

บทเรียนนี้จะอธิบายวิธีซ่อนแถบนำทาง ซึ่งได้แนะนำไว้ใน 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 ของแอปไม่โดนแถบของระบบบดบัง สำหรับข้อมูลเพิ่มเติม การสนทนาเกี่ยวกับหัวข้อนี้ โปรดดู การซ่อนบทเรียนแถบสถานะ