Chụp và thả tiêu điểm

Trong các chế độ tương tác chuyên biệt (chẳng hạn như canvas vẽ được nhúng, bề mặt tay điều khiển trò chơi hoặc hộp thoại nhập liệu theo phương thức), ứng dụng của bạn có thể cần tạm thời khoá tiêu điểm vào một thành phần duy nhất và ngăn các phím Tab hoặc phím định hướng điều hướng ra khỏi thành phần đó.

Lấy nét khi chụp

Để lấy tiêu điểm, hãy gọi captureFocus() trên FocusRequester:

val focusRequester = remember { FocusRequester() }

Box(
    modifier = Modifier
        .focusRequester(focusRequester)
        .focusable()
        .onFocusChanged { focusState ->
            if (focusState.isFocused) {
                focusRequester.captureFocus()
            }
        }
)

Khi tiêu điểm được ghi lại, các phím điều hướng tiêu điểm tiêu chuẩn (chẳng hạn như Tab) sẽ không di chuyển tiêu điểm đến các thành phần lân cận.

Giải phóng tiêu điểm

Để thoát khỏi trạng thái được ghi lại và khôi phục chế độ điều hướng tiêu điểm thông thường trên giao diện người dùng, hãy gọi freeFocus():

IconButton(
    onClick = {
        focusRequester.freeFocus()
    }
) {
    Icon(Icons.Default.Close, contentDescription = "Exit focus lock")
}