เป้าหมายโฟกัสคือองค์ประกอบ UI ที่โฟกัสของแป้นพิมพ์สามารถย้ายไปได้ ผู้ใช้สามารถย้ายโฟกัสของแป้นพิมพ์ด้วยแป้น Tab หรือแป้นลูกศรได้โดยทำดังนี้
- Tab หรือ Shift+Tab — ย้ายโฟกัสไปข้างหน้าหรือข้างหลังตามลำดับการแสดงผลแบบมิติเดียว
- ปุ่มทิศทาง - ย้ายโฟกัสแบบ 2 มิติ (ขึ้น ลง ซ้าย และขวา)
องค์ประกอบ UI แบบอินเทอร์แอกทีฟเป็นเป้าหมายโฟกัสโดยค่าเริ่มต้น
คอมโพเนนต์แบบอินเทอร์แอกทีฟเป็นเป้าหมายโฟกัสโดยค่าเริ่มต้น กล่าวคือ องค์ประกอบ UI จะเป็นเป้าหมายโฟกัสหากผู้ใช้แตะหรือคลิกได้
เช่น ลองพิจารณาคอมโพเนนต์ Card 3 รายการ หากการ์ดแรกและสามมีการโต้ตอบ (กำหนดonClickการเรียกกลับ) แต่การ์ดที่สองเป็นเพียง
การให้ข้อมูล (ไม่มีการจัดการการคลิก) การกดปุ่มTab บนการ์ดแรก
จะข้ามการ์ดที่สองและไปยังการ์ดที่สามโดยตรง
Card(onClick = { /* First card action */ }) { Text("Card 1 (Interactive)") } Card { Text("Card 2 (Informational - not focusable)") } Card(onClick = { /* Third card action */ }) { Text("Card 3 (Interactive)") }
คุณทำให้การ์ดที่ 2 เป็นเป้าหมายโฟกัสได้โดยระบุพารามิเตอร์ onClick
Card(onClick = { /* Second card action */ }) { Text("Card 2 (Now interactive and focusable)") }
ตัวแก้ไข clickable ยังเปลี่ยนองค์ประกอบ UI มาตรฐานหรือที่กำหนดเองให้เป็น
เป้าหมายโฟกัสด้วย ดูรายละเอียดได้ที่แตะค้าง
Box( modifier = Modifier .clickable { /* Handle click */ } ) { Text("Custom interactive element") }
ทำให้ Composable เป็นเป้าหมายโฟกัสที่คลิกไม่ได้
ตัวแก้ไข focusable จะทำให้ Composable เป็นเป้าหมายโฟกัสโดยไม่จำเป็นต้องมี
ความหมายของการคลิก ผู้ใช้สามารถย้ายโฟกัสของแป้นพิมพ์ไปยัง Composable ที่แก้ไขแล้ว (เช่น เพื่อตรวจสอบเนื้อหาด้วยเครื่องมือเพื่อการช่วยเหลือพิเศษหรือเลื่อนวิวพอร์ต) ได้
แต่การกดแป้น Enter หรือ Space
จะไม่ทริกเกอร์การคลิก
Box( modifier = Modifier .focusable() ) { Text("Non-clickable focus target") }
สร้าง Composable ที่ไม่สามารถโฟกัสได้
ในบางสถานการณ์ คุณอาจต้องการยกเว้นองค์ประกอบแบบอินเทอร์แอกทีฟจากการไปยังส่วนต่างๆ ด้วยแป้นพิมพ์
โดยไม่ต้องปิดใช้เหตุการณ์ของเคอร์เซอร์หรือการคลิก คุณป้องกันไม่ให้คอมโพเนนต์รับโฟกัสได้โดยตั้งค่า canFocus = false ภายในตัวแก้ไข
focusProperties ดังนี้
var checked by remember { mutableStateOf(false) } Switch( checked = checked, onCheckedChange = { checked = it }, // Prevent component from being focused modifier = Modifier .focusProperties { canFocus = false } )
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- ลำดับการส่งผ่านโฟกัส
- โฟกัสในช่องข้อความ
- โฟกัสเป้าหมายกลุ่ม
- ระบุสถานะโฟกัส
- ทดสอบการไปยังส่วนต่างๆ โดยใช้โฟกัส