포커스 이동 및 지우기

FocusManager를 사용하면 포커스를 방향에 따라 이동하거나 완전히 지울 수 있습니다. 직접 구성요소 타겟팅에는 FocusRequester를 사용합니다 (프로그래매틱 방식으로 포커스 요청 참고).

FocusManager를 사용한 방향성 포커스 이동

상대적인 방향으로 프로그래매틱 방식으로 포커스를 이동하려면 다음 단계를 따르세요.

  1. LocalFocusManager.current를 사용하여 FocusManager 인스턴스를 가져옵니다.
  2. FocusDirection 값 (Next, Previous, Up, Down, Left, Right, Enter 또는 Exit)을 사용하여 moveFocus()를 호출합니다.

val focusManager = LocalFocusManager.current

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

분명한 초점

현재 포커스를 보유한 요소에서 포커스를 삭제하려면(예: 사용자가 Esc 키를 누르는 경우) clearFocus()를 호출합니다.

val focusManager = LocalFocusManager.current

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

clearFocus() 함수는 선택적 force: Boolean = false 매개변수를 허용합니다.

  • force = false (기본값): 포커스 잠금을 준수하며 활성 구성요소가 포커스를 캡처한 경우 포커스를 지우지 않습니다.
  • force = true: 구성요소가 포커스를 캡처한 경우에도 무조건 포커스를 지웁니다.