Thiết lập thủ công màn hình tràn viền

Bạn có thể bật chế độ hiển thị tràn viền trong ứng dụng bằng cách gọi enableEdgeToEdge. Điều này là đủ cho hầu hết các ứng dụng. Hướng dẫn này mô tả cách bật chế độ hiển thị tràn viền nếu ứng dụng của bạn cần thực hiện việc này mà không dùng enableEdgeToEdge.

Bố trí ứng dụng ở chế độ toàn màn hình

Sử dụng WindowCompat.setDecorFitsSystemWindows(window, false) để bố trí ứng dụng của bạn phía sau các thanh hệ thống, như trong ví dụ về mã sau:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  WindowCompat.setDecorFitsSystemWindows(window, false)
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
}

Thay đổi màu của các thanh hệ thống

Khi hoạt động trong bố cục tràn viền, ứng dụng của bạn cần thay đổi màu của các thanh hệ thống để nội dung bên dưới có thể nhìn thấy. Sau khi ứng dụng của bạn thực hiện bước này, hệ thống sẽ xử lý mọi hoạt động bảo vệ trực quan của giao diện người dùng ở chế độ thao tác bằng cử chỉ và ở chế độ nút.

  • Chế độ thao tác bằng cử chỉ: hệ thống áp dụng tính năng điều chỉnh màu linh hoạt, trong đó nội dung của các thanh hệ thống sẽ thay đổi màu dựa trên nội dung phía sau các thanh đó. Trong ví dụ sau, phần điều khiển trong thanh điều hướng sẽ chuyển sang màu tối khi nằm phía trên nội dung sáng và chuyển sang màu sáng khi nằm phía trên nội dung tối.
Hình 1. Thay đổi màu sắc ở chế độ thao tác bằng cử chỉ.
  • Chế độ nút: hệ thống áp dụng một lớp phủ mờ phía sau các thanh hệ thống (đối với API cấp 29 trở lên) hoặc một thanh hệ thống trong suốt (đối với API cấp 28 trở xuống).
Hình ảnh minh hoạ các thanh hệ thống mờ
Hình 2. Màn nền mờ phía sau các thanh hệ thống.
  • Màu nội dung trên thanh trạng thái: kiểm soát màu của nội dung trên thanh trạng thái, chẳng hạn như thời gian và biểu tượng.
Hình ảnh cho thấy màu nội dung trên thanh trạng thái
Hình 3. Màu nội dung của thanh trạng thái.

Bạn có thể chỉnh sửa tệp themes.xml để đặt màu cho thanh điều hướng và (không bắt buộc) đặt thanh trạng thái thành trong suốt và màu nội dung thanh trạng thái thành màu tối.

<!-- values-v29/themes.xml -->
<style name="Theme.MyApp">
  <item name="android:navigationBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set to transparent if your app is drawing behind the status bar. -->
  <item name="android:statusBarColor">
     @android:color/transparent
  </item>

  <!-- Optional: set for a light status bar with dark content. -->
  <item name="android:windowLightStatusBar">
    true
  </item>
</style>

Bạn có thể sử dụng trực tiếp API WindowInsetsController, nhưng bạn nên sử dụng WindowInsetsControllerCompat của Thư viện hỗ trợ khi có thể. Bạn có thể dùng API WindowInsetsControllerCompat thay vì theme.xml để kiểm soát màu nội dung của thanh trạng thái. Để làm như vậy, hãy sử dụng hàm setAppearanceLightNavigationBars(), truyền true để thay đổi màu nền trước của chế độ điều hướng thành màu sáng hoặc false để quay lại màu mặc định.

Kotlin

val windowInsetsController =
      ViewCompat.getWindowInsetsController(window.decorView)

windowInsetsController?.isAppearanceLightNavigationBars = true

Java

WindowInsetsControllerCompat windowInsetsController =
      ViewCompat.getWindowInsetsController(getWindow().getDecorView());
if (windowInsetsController == null) {
    return;
}

windowInsetsController.setAppearanceLightNavigationBars(true);