https://developer.android.com/develop/ui/compose/touch-input/focus/change-focus-behavior?hl=ko

FocusRequester?

컴포저블을 포커스 가능하게 만들기

var color by remember { mutableStateOf(Green) }
Box(
    Modifier
        .background(color)
        .onFocusChanged { color = if (it.isFocused) Blue else Green }
        .focusable()
) {
    Text("Focusable 1")
}

Modifire에 focusable() 을 이용하여 포커스가 가능하게 만들 수 있음

var checked by remember { mutableStateOf(false) }

Switch(
    checked = checked,
    onCheckedChange = { checked = it },
    // Prevent component from being focused
    modifier = Modifier
        .focusProperties { canFocus = false }
)

반대로 .focusProperties { canFocus = false } 로 포커스가 되지 않도록 만들 수 있음

FocusRequester로 포커스 상태 바꾸기

@Composable
fun KotlinWorldFocusRequester() {
    ..
    val focusRequester = remember { FocusRequester() } // 1. FocusRequester을 Composable 내의 remember 블록에서 선언한다.

    OutlinedTextField(
        // 2. Modifier.focusRequester() 함수를 이용해 위에서 만든 focusRequester을 포커스를 주기 원하는 곳에 붙인다.
        modifier = Modifier
            .focusRequester(focusRequester),
        ..
    )
    ..
    Button(onClick = { focusRequester.requestFocus() }) { // 3. 특정 이벤트가 발생했을 때 포커스 되도록하려면 requestFocus()를 실행하게 한다
        Text(text = "텍스트 필드에 포커스 주기")
    }
    ..
}
출처: <https://kotlinworld.com/238> [조세영의 Kotlin World:티스토리]
  1. FocusRequester을 Composable 내의 remember 블록에서 선언한다.
  2. Modifier.focusRequester() 함수를 이용해 위에서 만든 focusRequester을 포커스가 되길 원하는 곳에 붙인다.
  3. 특정 이벤트가 발생했을 때 포커스 되도록하려면 **requestFocus()**를 실행하게 한다