Ẩn thanh điều hướng

Bài học này mô tả cách ẩn thanh điều hướng, đã được giới thiệu trong Android 4.0 (API cấp 14).

Mặc dù bài học này tập trung vào việc ẩn thanh điều hướng, nhưng bạn nên thiết kế ứng dụng của mình để ẩn thanh trạng thái cùng lúc, như mô tả trong phần Ẩn thanh trạng thái. Việc ẩn thanh điều hướng và thanh trạng thái (trong khi vẫn giữ cho các thanh điều hướng và trạng thái này dễ truy cập) cho phép nội dung sử dụng toàn bộ không gian hiển thị, nhờ đó mang lại trải nghiệm người dùng sống động hơn.

thanh hệ thống

Hình 1. Thanh điều hướng.

Ẩn Thanh điều hướng

Bạn có thể ẩn thanh điều hướng bằng cờ SYSTEM_UI_FLAG_HIDE_NAVIGATION. Đoạn mã này ẩn cả thanh điều hướng và thanh trạng thái:

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);

Xin lưu ý những điều sau:

  • Với phương pháp này, thao tác chạm vào bất kỳ đâu trên màn hình sẽ khiến thanh điều hướng (và thanh trạng thái) xuất hiện lại và vẫn hiển thị. Hoạt động tương tác của người dùng khiến cờ bị xoá.
  • Sau khi xoá cờ, ứng dụng cần đặt lại nếu bạn muốn ẩn các thanh một lần nữa. Hãy xem phần Phản hồi các thay đổi về chế độ hiển thị giao diện người dùng để thảo luận về cách theo dõi các thay đổi về chế độ hiển thị giao diện người dùng để ứng dụng của bạn có thể phản hồi phù hợp.
  • Vị trí đặt cờ giao diện người dùng sẽ tạo ra sự khác biệt. Nếu bạn ẩn các thanh hệ thống trong phương thức onCreate() của hoạt động và người dùng nhấn vào Màn hình chính, thì các thanh hệ thống sẽ xuất hiện lại. Khi người dùng mở lại hoạt động, onCreate() sẽ không được gọi, vì vậy, các thanh hệ thống sẽ vẫn hiển thị. Nếu bạn muốn các thay đổi về giao diện người dùng hệ thống vẫn tồn tại khi người dùng di chuyển vào và ra khỏi hoạt động của bạn, hãy đặt cờ giao diện người dùng trong onResume() hoặc onWindowFocusChanged().
  • Phương thức setSystemUiVisibility() chỉ có hiệu lực nếu khung hiển thị mà bạn gọi từ đó đang hiển thị.
  • Khi di chuyển ra khỏi khung hiển thị, các cờ được đặt bằng setSystemUiVisibility() sẽ bị xoá.

Đặt nội dung xuất hiện phía sau thanh điều hướng

Trên Android 4.1 trở lên, bạn có thể thiết lập để nội dung của ứng dụng xuất hiện phía sau thanh điều hướng để nội dung không đổi kích thước khi thanh điều hướng bị ẩn và xuất hiện. Để thực hiện việc này, hãy sử dụng SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. Có thể bạn cũng cần sử dụng SYSTEM_UI_FLAG_LAYOUT_STABLE để giúp ứng dụng duy trì bố cục ổn định.

Khi áp dụng phương pháp này, bạn có trách nhiệm đảm bảo rằng các phần quan trọng trên giao diện người dùng của ứng dụng không bị thanh hệ thống che khuất. Để thảo luận thêm về chủ đề này, hãy xem bài học Ẩn thanh trạng thái.