Di chuyển và xoá tiêu điểm

FocusManager cho phép bạn di chuyển tiêu điểm theo hướng hoặc xoá hoàn toàn tiêu điểm. Sử dụng FocusRequester để nhắm đến thành phần trực tiếp (xem phần Yêu cầu tiêu điểm theo chương trình).

Di chuyển tiêu điểm theo hướng bằng FocusManager

Cách di chuyển tiêu điểm theo phương thức lập trình theo hướng tương đối:

  1. Lấy thực thể FocusManager bằng LocalFocusManager.current.
  2. Gọi moveFocus() bằng giá trị FocusDirection (Next, Previous, Up, Down, Left, Right, Enter hoặc Exit).

val focusManager = LocalFocusManager.current

Button(
    onClick = {
        focusManager.moveFocus(FocusDirection.Next)
    }
) {
    Text("Next Field")
}

Xoá tiêu điểm

Để xoá tiêu điểm khỏi bất kỳ phần tử nào hiện đang giữ tiêu điểm (ví dụ: khi người dùng nhấn phím Esc), hãy gọi clearFocus():

val focusManager = LocalFocusManager.current

Box(
    modifier = Modifier.onPreviewKeyEvent { keyEvent ->
        if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) {
            focusManager.clearFocus()
            true
        } else {
            false
        }
    }
)

Hàm clearFocus() chấp nhận tham số force: Boolean = false (không bắt buộc):

  • force = false (mặc định): Tuân thủ các khoá tiêu điểm và sẽ không xoá tiêu điểm nếu thành phần đang hoạt động đã lấy tiêu điểm.
  • force = true: Xoá tiêu điểm vô điều kiện ngay cả khi một thành phần đã lấy tiêu điểm.