Việc gọi enableEdgeToEdge sẽ gói gọn logic cần thiết để thực sự
tương thích ngược và do đó là cách nên dùng để thiết lập màn hình
tràn viền. Hãy tham khảo tài liệu về Compose và Views
thay vì hướng dẫn này để biết cách hiện đại để tràn viền bằng
enableEdgeToEdge.
Mặc dù không nên dùng, nhưng nếu ứng dụng của bạn phải thiết lập màn hình tràn viền theo cách thủ công, thì bạn có thể làm theo các bước sau:
- Gọi
WindowCompat.setDecorFitsSystemWindows(window, false). - Đặt thanh hệ thống thành trong suốt.
- Xử lý phần lồng ghép.
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 thanh hệ thống, như minh hoạ 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 thanh hệ thống
Khi tạo bố cục tràn viền theo cách thủ công cho Android 14 trở xuống, ứng dụng của bạn cũng phải đặt thanh hệ thống thành trong suốt.
Bạn có thể chỉnh sửa tệp themes.xml để đặt màu của thanh trạng thái và thanh điều hướng thành trong suốt, đồng thời thay đổi màu biểu tượng thanh trạng thá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 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 thanh đ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);
Xử lý phần lồng ghép
Cuối cùng, ứng dụng của bạn phải xử lý phần lồng ghép để giao diện người dùng quan trọng tránh thanh hệ thống và vết cắt trên màn hình. Hãy tham khảo tài liệu về Compose và Views để tìm hiểu cách xử lý phần lồng ghép.