การเรียกใช้ enableEdgeToEdge
จะห่อหุ้มตรรกะที่จำเป็นเพื่อให้เข้ากันได้แบบย้อนหลังอย่างแท้จริง จึงเป็นวิธีที่แนะนำในการตั้งค่าการแสดงผลแบบขอบจรดขอบ โปรดดูเอกสารประกอบของ Compose และ Views
แทนคู่มือนี้เพื่อดูวิธีที่ทันสมัยในการแสดงผลแบบขอบจรดขอบโดยใช้
enableEdgeToEdge
แม้ว่าเราจะไม่แนะนำ แต่หากแอปต้องตั้งค่าการแสดงผลแบบขอบจรดขอบด้วยตนเอง คุณสามารถทำตามขั้นตอนต่อไปนี้
- โทร
WindowCompat.setDecorFitsSystemWindows(window, false)
- ตั้งค่าแถบระบบให้โปร่งใส
- จัดการระยะขอบ
จัดวางแอปในโหมดเต็มหน้าจอ
ใช้ WindowCompat.setDecorFitsSystemWindows(window, false)
เพื่อจัดวางแอปไว้ด้านหลังแถบระบบ ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้
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); }
เปลี่ยนสีของแถบระบบ
เมื่อสร้างเลย์เอาต์แบบขอบจรดขอบสำหรับ Android 14 และเวอร์ชันเก่ากว่าด้วยตนเอง แอปของคุณ ต้องทำให้แถบระบบโปร่งใสด้วย
คุณสามารถแก้ไขไฟล์ themes.xml
เพื่อตั้งค่าสีของแถบสถานะและการนำทาง
ให้โปร่งใส และเปลี่ยนสีไอคอนแถบสถานะได้
<!-- 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>
คุณสามารถใช้ WindowInsetsControllerCompat
API แทน
theme.xml
เพื่อควบคุมสีเนื้อหาของแถบสถานะได้ โดยใช้ฟังก์ชัน
setAppearanceLightNavigationBars()
และส่ง true
เพื่อเปลี่ยนสีพื้นหน้าของการนำทางเป็น
สีอ่อน หรือ false
เพื่อเปลี่ยนกลับเป็นสีเริ่มต้น
Kotlin
val windowInsetsController = ViewCompat.getWindowInsetsController(window.decorView) windowInsetsController?.isAppearanceLightNavigationBars = true
Java
WindowInsetsControllerCompat windowInsetsController = ViewCompat.getWindowInsetsController(getWindow().getDecorView()); if (windowInsetsController == null) { return; } windowInsetsController.setAppearanceLightNavigationBars(true);
จัดการการแทรก
สุดท้าย แอปของคุณต้องจัดการ Inset เพื่อให้ UI ที่สำคัญหลีกเลี่ยง แถบระบบและรอยบากของจอแสดงผล โปรดดูเอกสารประกอบเขียนและมุมมอง เพื่อดูวิธีจัดการภาพแทรก