ในโหมดการโต้ตอบเฉพาะทาง (เช่น Canvas การวาดภาพที่ฝังไว้ พื้นผิวเกมคอนโทรลเลอร์ หรือกล่องโต้ตอบการป้อนข้อมูลโมดัล) แอปของคุณอาจต้องล็อกโฟกัสไว้ที่คอมโพเนนต์เดียวชั่วคราว และป้องกันไม่ให้ปุ่ม Tab หรือปุ่มทิศทางนำทางออกไป
จับภาพโฟกัส
หากต้องการจับโฟกัส ให้เรียกใช้ captureFocus() ใน FocusRequester ดังนี้
val focusRequester = remember { FocusRequester() } Box( modifier = Modifier .focusRequester(focusRequester) .focusable() .onFocusChanged { focusState -> if (focusState.isFocused) { focusRequester.captureFocus() } } )
ขณะที่โฟกัสถูกจับไว้ แป้นสำหรับการไปยังส่วนต่างๆ ของโฟกัสมาตรฐาน (เช่น Tab) จะไม่ย้ายโฟกัสไปยังคอมโพเนนต์ที่อยู่ใกล้เคียง
ปล่อยโฟกัส
หากต้องการออกจากสถานะที่บันทึกไว้และคืนค่าการไปยังส่วนต่างๆ ของโฟกัสตามปกติใน UI ให้เรียกใช้ freeFocus():
IconButton( onClick = { focusRequester.freeFocus() } ) { Icon(Icons.Default.Close, contentDescription = "Exit focus lock") }
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- เป้าหมายโฟกัส
- เป้าหมายโฟกัสของกลุ่ม
- ขอโฟกัสแบบเป็นโปรแกรม