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 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 phím Tab hoặc phím mũi tên di chuyển ra xa.

Lấy tiêu điểm

Để 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()
            }
        }
)

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

Bỏ tiêu điểm

Để thoát khỏi trạng thái đã chụp và khôi phục thao tác đ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")
}