프로그래매틱 방식으로 포커스 요청

일부 사용자 흐름에서는 애플리케이션이 포커스를 특정 구성요소로 명시적으로 이동해야 합니다. 예를 들어 사용자가 '검색' 버튼을 클릭하면 검색 입력 필드에 자동으로 포커스를 배치할 수 있습니다.

FocusRequester 사용

포커스를 명시적으로 요청하려면 다음을 실행하세요.

  1. FocusRequester 인스턴스를 만들고 기억합니다(val focusRequester = remember { FocusRequester() }).
  2. focusRequester 수정자를 사용하여 FocusRequester를 타겟 컴포저블에 연결합니다.
  3. 이벤트 콜백 (예: onClick) 또는 코루틴 범위 내에서 requestFocus()를 호출합니다.

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

Button(onClick = { focusRequester.requestFocus() }) {
    Text("Request focus on TextField")
}

초기 화면 포커스 설정

화면이 처음 표시될 때 특정 구성요소에 초기 포커스를 배치하려면 LaunchedEffect(Unit) 내에서 requestFocus()를 트리거하세요.

LaunchedEffect(Unit) {
    focusRequester.requestFocus()
}

컨테이너 간에 탐색하거나 다른 화면에서 돌아올 때 focusRestorer()를 상위 컨테이너에 연결하여 마지막으로 포커스가 맞춰진 하위 요소로 포커스를 자동으로 반환할 수도 있습니다. 자세한 내용은 포커스 복원 가이드를 참고하세요.