Ẩ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 che giấu thanh điều hướng, bạn nên thiết kế ứng dụng để ẩn thanh trạng thái đồng thời, như mô tả trong phần Ẩn thanh trạng thái. Ẩn thanh điều hướng và thanh trạng thái (trong khi vẫn giữ cho các thanh này dễ truy cập) cho phép nội dung sử dụng toàn bộ không gian hiển thị, do đó mang lại trải nghiệm trải nghiệm người dùng.

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ách sử dụ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, việc chạm vào vị trí bất kỳ 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à tiếp tục hiển thị. Sự tương tác của người dùng khiến cờ được sẽ bị xoá.
  • Sau khi cờ, ứng dụng cần đặt lại nếu bạn lại muốn ẩn thanh. Hãy xem bài viết Cách phản hồi các thay đổi về chế độ hiển thị trên giao diện người dùng để biết 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ể sẽ phản hồi phù hợp.
  • Vị trí bạn đặt cờ giao diện người dùng tạo nên sự khác biệt. Nếu bạn ẩn các thanh hệ thống trong phần hoạt động của mình onCreate() và người dùng nhấn vào Màn hình chính, 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 thanh hệ thống sẽ vẫn hiển thị. Nếu bạn muốn thay đổi giao diện người dùng hệ thống thành duy trì khi người dùng di chuyển vào và ra khỏi hoạt động của bạn, đặt cờ giao diện người dùng trong onResume() hoặc onWindowFocusChanged().
  • Chỉ phương thức setSystemUiVisibility() có hiệu ứng nếu chế độ xem bạn dùng để gọi nó có thể nhìn thấy.
  • Việc điều hướng ra khỏi khung hiển thị sẽ gây ra cờ đặt bằng setSystemUiVisibility() cần xoá.

Hiển thị nội dung 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 ẩn đi và các chương trình. Để làm việc này, hãy sử dụng SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. Có thể bạn cũng cần phải sử dụng SYSTEM_UI_FLAG_LAYOUT_STABLE để giúp ứng dụng của bạn 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 những phần quan trọng giao diện người dùng của ứng dụng không bị thanh hệ thống che phủ. Để biết thêm thảo luận về chủ đề này, hãy xem Bài học về Ẩn Thanh trạng thái.