https://developer.android.com/develop/ui/compose/touch-input/focus/change-focus-behavior?hl=ko
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 } 로 포커스가 되지 않도록 만들 수 있음
@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:티스토리]