FocusManager ช่วยให้คุณย้ายโฟกัสตามทิศทางหรือล้างโฟกัสทั้งหมดได้
ใช้ FocusRequester สำหรับการกำหนดเป้าหมายคอมโพเนนต์โดยตรง (ดูขอโฟกัสแบบเป็นโปรแกรม)
การเคลื่อนไหวของโฟกัสตามทิศทางด้วย FocusManager
วิธีย้ายโฟกัสแบบเป็นโปรแกรมในทิศทางที่สัมพันธ์กัน
- รับอินสแตนซ์
FocusManagerโดยใช้LocalFocusManager.current - เรียกใช้
moveFocus()ด้วยค่าFocusDirection(Next,Previous,Up,Down,Left,Right,EnterหรือExit)
val focusManager = LocalFocusManager.current Button( onClick = { focusManager.moveFocus(FocusDirection.Next) } ) { Text("Next Field") }
ล้างโฟกัส
หากต้องการนำโฟกัสออกจากองค์ประกอบที่โฟกัสอยู่
(เช่น เมื่อผู้ใช้กดแป้น Esc)
ให้เรียกใช้ clearFocus():
val focusManager = LocalFocusManager.current Box( modifier = Modifier.onPreviewKeyEvent { keyEvent -> if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) { focusManager.clearFocus() true } else { false } } )
ฟังก์ชัน clearFocus() ยอมรับพารามิเตอร์ force: Boolean = false ที่ไม่บังคับ ดังนี้
force = false(ค่าเริ่มต้น): เคารพการล็อกโฟกัสและจะไม่ล้างโฟกัสหากคอมโพเนนต์ที่ใช้งานอยู่จับโฟกัสforce = true: ล้างโฟกัสโดยไม่มีเงื่อนไขแม้ว่าคอมโพเนนต์จะจับโฟกัสไว้ก็ตาม
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- เป้าหมายโฟกัส
- ลำดับการส่งผ่านโฟกัส
- ขอโฟกัสแบบเป็นโปรแกรม