focusRestorer 修饰符官方说明
This modifier can be used to save and restore focus to a focus group. When focus leaves the focus group, it stores a reference to the item that was previously focused. Then when focus re-enters this focus group, it restores focus to the previously focused item.
Params:
fallback - A FocusRequester that is used when focus restoration fails to restore the initially focused item. For example, this might happen if the item is not available to be focused. The default value of FocusRequester.Default chooses the default focusable item.
Samples:
androidx.compose.ui.samples.FocusRestorerSample
LazyRow(Modifier.focusRestorer()) {
item { Button(onClick = {}) { Text("1") } }
item { Button(onClick = {}) { Text("2") } }
item { Button(onClick = {}) { Text("3") } }
item { Button(onClick = {}) { Text("4") } }
}
androidx.compose.ui.samples.FocusRestorerCustomFallbackSample
val focusRequester = remember { FocusRequester() }
LazyRow(
// If restoration fails, focus would fallback to the item associated with focusRequester.
Modifier.focusRestorer(focusRequester)
) {
item {
Button(modifier = Modifier.focusRequester(focusRequester), onClick = {}) { Text("1") }
}
item { Button(onClick = {}) { Text("2") } }
item { Button(onClick = {}) { Text("3") } }
item { Button(onClick = {}) { Text("4") } }
}
即针对focus group
才能使用
所以 需要添加focusGroup修饰符
kotlin
val focusRequester = remember { FocusRequester() }
Row(
// If restoration fails, focus would fallback to the item associated with focusRequester.
Modifier.focusRestorer(focusRequester).focusGroup() // 这里是关键
) {
Button(modifier = Modifier.focusRequester(focusRequester), onClick = {}) { Text("1") }
Button(onClick = {}) { Text("2") }
Button(onClick = {}) { Text("3") }
Button(onClick = {}) { Text("4") }
}