Bạn có thể bật màn hình 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
.
Sắp xếp ứ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ụ 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 ở bố cục tràn viền, ứng dụng của bạn cần thay đổi màu của thanh hệ thống để cho phép hiển thị nội dung bên dưới. Sau khi ứng dụng thực hiện bước này, hệ thống sẽ xử lý mọi biện pháp bảo vệ hình ảnh của giao diện người dùng ở chế độ điều hướng bằng cử chỉ và ở chế độ nút.
- Chế độ điều hướng bằng cử chỉ: hệ thống áp dụng tính năng thích ứng màu động trong đó nội dung của các thanh hệ thống thay đổi màu sắc dựa trên nội dung phía sau các thanh đó. Trong ví dụ sau, tay cầm 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.
- Chế độ nút: hệ thống áp dụng một lưới mờ trong suốt 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).
- Màu nội dung thanh trạng thái: kiểm soát màu của nội dung thanh trạng thái, chẳng hạn như thời gian và biểu tượng.
Bạn có thể chỉnh sửa tệp themes.xml
để đặt màu của thanh điều hướng và tuỳ ý đặt thanh trạng thái thành trong suốt và màu nội dung thanh trạng thái là 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
. Tuy nhiên, bạn nên sử dụng Thư viện hỗ trợ WindowInsetsControllerCompat
nếu có thể. Bạn có thể sử dụng API WindowInsetsControllerCompat
thay vì theme.xml
để kiểm soát màu nội dung của thanh trạng thái. Để thực hiện việc này, hãy sử dụng hàm setAppearanceLightNavigationBars()
, truyền vào true
để thay đổi màu nền trước của thành phần đ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);