Phần Thứ tự truyền tải tâm điểm mặc định đã mô tả cách Compose tự động thêm hành vi truyền tải tâm điểm vào các phần tử của bạn, cho cả thao tác một chiều (phím tab
) và hai chiều (phím mũi tên). Trong một số trường hợp, bạn có thể cần phải ghi đè hành vi mặc định này và trình bày rõ ràng hơn về thứ tự duyệt cần thiết.
Ghi đè thứ tự truyền tải một chiều
Để thay đổi thứ tự truyền tải tâm điểm mặc định cho việc điều hướng một chiều, bạn tạo một tập hợp các tham chiếu, mỗi tham chiếu cho một thành phần kết hợp có thể làm tâm điểm:
val (first, second, third, fourth) = remember { FocusRequester.createRefs() }
Sau đó, sử dụng công cụ sửa đổi focusRequester
để liên kết từng thành phần với một thành phần kết hợp:
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") } } }
Giờ đây, bạn có thể sử dụng công cụ sửa đổi focusProperties
để chỉ định thứ tự truyền tải tuỳ chỉnh:
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") } } }
Ghi đè thứ tự truyền tải hai chiều
Bạn cũng có thể thêm quyền kiểm soát chi tiết đối với thứ tự truyền tải tâm điểm để điều hướng hai chiều bằng các phím mũi tên. Đối với mỗi phần tử, bạn có thể ghi đè đích đến điều hướng mặc định cho từng hướng bằng cách thêm đối tượng sửa đổi focusProperties
và chỉ định mục sẽ xuất hiện, xuống hoặc bất kỳ hướng nào khác:
TextButton( onClick = {}, modifier = Modifier .focusRequester(fourth) .focusProperties { down = third right = second } ) {}
Kỹ thuật này không chỉ sử dụng hiệu quả các mũi tên trên bàn phím, mà còn hoạt động với các D-Pads và thanh gắn trên bộ điều khiển có dây và không dây.
Đề xuất cho bạn
- Lưu ý: văn bản có đường liên kết sẽ hiện khi JavaScript tắt
- Thay đổi hành vi của tiêu điểm
- Tiêu điểm trong Compose