จับภาพและปล่อยโฟกัส

ในโหมดการโต้ตอบเฉพาะทาง (เช่น 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")
}