รอยบากบนหน้าจอคือพื้นที่ในอุปกรณ์บางเครื่องที่ยื่นเข้าไปในพื้นผิวของจอแสดงผล ซึ่งช่วยให้ได้รับประสบการณ์การใช้งานแบบเต็มหน้าจอไปพร้อมกับมีพื้นที่สำหรับเซ็นเซอร์ที่สำคัญที่ด้านหน้าของอุปกรณ์


Android รองรับรอยบากในการแสดงผลบนอุปกรณ์ที่ใช้ Android 9 (API ระดับ 28) ขึ้นไป อย่างไรก็ตาม ผู้ผลิตอุปกรณ์ยังรองรับส่วนตัดบนจอแสดงผลในอุปกรณ์ที่ใช้ Android 8.1 หรือต่ำกว่าได้ด้วย
หน้านี้จะอธิบายวิธีใช้การรองรับอุปกรณ์ที่มีรอยบากในเครื่องมือเขียน รวมถึงวิธีใช้พื้นที่รอยบาก ซึ่งเป็นสี่เหลี่ยมผืนผ้าแบบเต็มขอบบนพื้นผิวของจอแสดงผลที่มีรอยบาก
เคสเริ่มต้น
แอปที่กำหนดเป้าหมายเป็น API ระดับ 34 หรือต่ำกว่า หรือกิจกรรมที่ไม่ได้เรียกใช้ enableEdgeToEdge
จะไม่วาดในพื้นที่ส่วนที่ถูกตัดออกโดยค่าเริ่มต้น เว้นแต่แอปจะวาดลงในแถบระบบที่มีส่วนที่ถูกตัดออกของจอแสดงผล
แอปที่กำหนดเป้าหมายเป็น API ระดับ 35 ขึ้นไปในอุปกรณ์ที่ใช้ Android 15 ขึ้นไป หรือกิจกรรมที่เรียก enableEdgeToEdge
จะวาดในพื้นที่ที่ตัดออก
กล่าวคือ ระบบจะตีความ LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
,
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
และ
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
เป็น LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
สำหรับหน้าต่างที่ไม่ใช่แบบลอยในแอปที่กำหนดเป้าหมายเป็น API ระดับ 35 ขึ้นไปในอุปกรณ์ที่ใช้ Android 15 ขึ้นไป
จัดการข้อมูลส่วนที่ตัดออกด้วยตนเอง
คุณต้องจัดการข้อมูลส่วนที่ตัดออกเพื่อป้องกันไม่ให้พื้นที่ส่วนที่ตัดออกบดบังข้อความ การควบคุม หรือองค์ประกอบแบบอินเทอร์แอกทีฟที่สําคัญซึ่งต้องใช้การจดจําการสัมผัสที่ละเอียด (ความไวต่อการสัมผัสอาจลดลงในพื้นที่ส่วนที่ตัดออก) ขณะจัดการกับส่วนที่ถูกตัดออก อย่ากำหนดความสูงของแถบสถานะแบบฮาร์ดโค้ด เนื่องจากอาจทำให้เนื้อหาทับซ้อนกันหรือถูกตัดออก แต่ให้จัดการรูปภาพที่ตัดออกด้วยวิธีใดวิธีหนึ่งต่อไปนี้แทน
ใช้
WindowInsets.displayCutout
,WindowInsets.safeContent
หรือWindowInsets.safeDrawing
การเข้าถึงออบเจ็กต์
Path
ที่ตัดออกด้วยLocalView.current.rootWindowInsets.displayCutout
สำหรับคอมโพสิท เราขอแนะนำให้ใช้ displayCutout
, safeContent
หรือ
safeDrawing
เพื่อจัดการส่วนตัดในคอมโพสิท แนวทางนี้ช่วยให้คุณคำนึงถึงระยะห่างจากขอบของส่วนที่ถูกตัดออกของจอแสดงผลเมื่อจำเป็น หรือละเว้นเมื่อไม่จำเป็น
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- ส่วนที่เว้นไว้ในหน้าต่างในเครื่องมือเขียน
- ตัวแก้ไขกราฟิก
- รูปแบบย่อหน้า