เปลี่ยนลำดับการส่งผ่านโฟกัส

ส่วนลำดับการส่งผ่านโฟกัสเริ่มต้นอธิบายวิธีการเขียน จะเพิ่มพฤติกรรมการส่งผ่านโฟกัสไปยังองค์ประกอบโดยอัตโนมัติสำหรับทั้ง การไปยังส่วนต่างๆ แบบมิติเดียว (แป้น tab) และแบบ 2 มิติ (แป้นลูกศร) ในบางส่วน คุณอาจจำเป็นต้องลบล้างการทำงานเริ่มต้นนี้และระบุให้เจาะจงมากขึ้น เกี่ยวกับลำดับการส่งผ่านที่จำเป็น

ลบล้างลำดับการส่งผ่านแบบหนึ่งมิติ

ในการเปลี่ยนลำดับการส่งผ่านโฟกัสเริ่มต้นสำหรับการนำทางแบบหนึ่งมิติ คุณสามารถ สร้างชุดการอ้างอิง 1 ชุดสำหรับ Composable ที่โฟกัสได้แต่ละรายการ:

val (first, second, third, fourth) = remember { FocusRequester.createRefs() }

จากนั้นใช้ตัวแก้ไข focusRequester เพื่อเชื่อมโยงแต่ละรายการกับ Composable:

Column {     Row {         TextButton({}, Modifier.focusRequester(first)) { Text("First field") }         TextButton({}, Modifier.focusRequester(third)) { Text("Third field") }     }      Row {         TextButton({}, Modifier.focusRequester(second)) { Text("Second field") }         TextButton({}, Modifier.focusRequester(fourth)) { Text("Fourth field") }     } }

ตอนนี้คุณสามารถใช้ตัวแก้ไข focusProperties เพื่อระบุลำดับการส่งผ่านที่กำหนดเองได้แล้ว ดังนี้

Column {     Row {         TextButton(             {},             Modifier                 .focusRequester(first)                 .focusProperties { next = second }         ) {             Text("First field")         }         TextButton(             {},             Modifier                 .focusRequester(third)                 .focusProperties { next = fourth }         ) {             Text("Third field")         }     }      Row {         TextButton(             {},             Modifier                 .focusRequester(second)                 .focusProperties { next = third }         ) {             Text("Second field")         }         TextButton(             {},             Modifier                 .focusRequester(fourth)                 .focusProperties { next = first }         ) {             Text("Fourth field")         }     } }

ลบล้างลำดับการส่งผ่านแบบ 2 มิติ

สามารถเพิ่มการควบคุมแบบละเอียดสำหรับลำดับการส่งผ่านโฟกัสได้ด้วย สำหรับการนำทางแบบ 2 มิติด้วยปุ่มลูกศร คุณสามารถดำเนินการต่อไปนี้สำหรับแต่ละองค์ประกอบ ลบล้างปลายทางการนำทางเริ่มต้นสำหรับแต่ละเส้นทางด้วยการเพิ่ม ตัวแก้ไข focusProperties และระบุรายการที่ระบบจะแสดง ขาลง หรือทิศทางอื่นๆ:

TextButton(     onClick = {},     modifier = Modifier         .focusRequester(fourth)         .focusProperties {             down = third             right = second         } ) {}

เทคนิคนี้ไม่เพียงใช้ลูกศรบนแป้นพิมพ์มีประสิทธิภาพเท่านั้น แต่ยังใช้ได้กับ D-Pads และติดบนตัวควบคุมแบบใช้สายและไร้สาย